- 浏览: 764087 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (241)
- 个人思考 (1)
- 数据库 (5)
- java基础 (32)
- 软件工程 (2)
- zk开源框架 (15)
- 设计模式 (25)
- javascript (12)
- css (9)
- UML (2)
- CMMI软件需求 (3)
- CMMI软件设计 (2)
- CMMI软件实现 (1)
- CMMI软件测试 (1)
- 正则表达式 (4)
- 系统日志配置 (4)
- 应用服务器 (1)
- spring (7)
- XML (6)
- java web (10)
- Ajax (3)
- RichFaces (14)
- 问题 (1)
- 评论文章 (2)
- fushioncharts (2)
- MAVN (4)
- jquery (26)
- Ext js学习 (2)
- 学习心得 (2)
- CSS兼容问题 (3)
- XSL-FOP (1)
- Quartz (0)
- OSGI (1)
- spring--security (6)
- apache tools (1)
- eclispe 小技巧 (2)
- Ant (1)
- 杂记 (1)
- spring3系列 (5)
- java cache (4)
- EffectiveJava (2)
- 代码重构 (0)
最新评论
-
psz6696:
可以说是超级简单的Demo了,可惜没有演示设值注入和构造注入两 ...
模拟spring中的ClassPathXmlApplicationContext类的实现 -
ziyourJava:
[flash=200,200][img][url][list] ...
spring security进级篇 V 自定义标签控制显示 -
ztw1122:
...
zk组件开发指南(目录) -
zjysuv:
容我说一句 在座的各位都是垃圾 spring 3.2以后的@C ...
三. spring mvc 异常统一处理 -
chengwu1201:
二 基于Spring的异常体系处理
zk动态产生多个页面的例子代码:
/** * * @功能 添加参数 * @author 创建人 gao_jie * @date 创建日期 Apr 23, 2009 * @version 1.0 * */ public class AddParameter extends Window implements AfterCompose { private static final long serialVersionUID = 1L; private int num = 0;// 条件个数 private Window win;// 参数风格 private Rows parameterRows;// 条件行数 private DesignerWnd desiWnd = null; @SuppressWarnings("unused") private Spreadsheet spreadSheet; private InforReport inforreport; /* * (non-Javadoc) * * @see org.zkoss.zk.ui.ext.AfterCompose#afterCompose() */ public void afterCompose() { parameterRows = (Rows) this.getFellow("parameterRows"); win = (Window) this.getFellow("AddParameter"); desiWnd = (DesignerWnd) Sessions.getCurrent().getAttribute("dWnd"); spreadSheet = (Spreadsheet) desiWnd.getFellow("spreadSheet"); inforreport = spreadSheet.getReport(); this.initiPage(inforreport.getParameters()); } /** * 初始化参数页面 获取已定义的参数 现实参数的name,type,defaultValue并可改 * * @param Parameters */ @SuppressWarnings("unchecked") public void initiPage(Map Parameters) { parameterRows.getChildren().clear(); if (Parameters != null && !Parameters.isEmpty()) { // 遍历Parameters的键集 Set parametset = Parameters.keySet(); Iterator ir = parametset.iterator(); while (ir.hasNext()) { String key = (String) ir.next(); // 获取已有的每一个参数 Parameter parameter = (Parameter) Parameters.get(key); // 计数器+1 num = num + 1; // 为每个参数在parameterRows里创建一个Row Row row = new Row(); row.setId("row_" + num); row.setParent(parameterRows); // 每个Row添加一个name,赋值为当前获取参数的name Textbox name = new Textbox(); name.setId("name_" + num); name.setWidth("80px"); name.setValue(parameter.getName()); name.setParent(row); // 每个Row添加一个type,赋值为当前获取参数的type Listbox type = new Listbox(); type.setParent(row); type.setId("type_" + num); type.setMold("select"); type.appendChild(new Listitem("字符串|String", "String")); type.appendChild(new Listitem("整型|Int", "Int")); type.appendChild(new Listitem("日期|Date", "Date")); type.appendChild(new Listitem("长整型|Long", "Long")); type.appendChild(new Listitem("单精度|Single", "Single")); type.appendChild(new Listitem("双精度|Double", "Double")); type.appendChild(new Listitem("货币|Currency", "Currency")); type.appendChild(new Listitem("字节|Byte", "Byte")); type.appendChild(new Listitem("布尔|Boolean", "Boolean")); type.appendChild(new Listitem("时间|Time", "Time")); type.appendChild(new Listitem("日期时间|Datetime", "Datetime")); if (parameter.getType().contains("String")) { type.setSelectedIndex(0); } else if (parameter.getType().contains("Int")) { type.setSelectedIndex(1); } else if (parameter.getType().contains("Date")) { type.setSelectedIndex(2); } else if (parameter.getType().contains("Long")) { type.setSelectedIndex(3); } else if (parameter.getType().contains("Single")) { type.setSelectedIndex(4); } else if (parameter.getType().contains("Double")) { type.setSelectedIndex(5); } else if (parameter.getType().contains("Currency")) { type.setSelectedIndex(6); } else if (parameter.getType().contains("Byte")) { type.setSelectedIndex(7); } else if (parameter.getType().contains("Boolean")) { type.setSelectedIndex(8); } else if (parameter.getType().contains("Time")) { type.setSelectedIndex(9); } else if (parameter.getType().contains("Datetime")) { type.setSelectedIndex(10); } else { type.setSelectedIndex(0); } // 每个Row添加一个defaultValue,赋值为当前获取参数的defaultValue Textbox defaultValue = new Textbox(); defaultValue.setId("parameter_" + num); defaultValue.setWidth("80px"); defaultValue.setValue(parameter.getDefaultValue()); defaultValue.setParent(row); // 每个Row添加一个"删除"按钮,触发删除事件 Button delbtn = new Button(); delbtn.setId("delbtd_" + num); delbtn.setLabel("删除"); delbtn.addEventListener("onClick", new DelEventListener(num)); delbtn.setParent(row); } } } /** * 添加参数 */ public void addParameter() { num = num + 1; // 产生Row Row row = new Row(); row.setId("row_" + num); row.setParent(parameterRows); Textbox name = new Textbox(); name.setId("name_" + num); name.setWidth("80px"); name.setParent(row); Listbox type = new Listbox(); type.setParent(row); type.setId("type_" + num); type.setMold("select"); type.appendChild(new Listitem("字符串|String", "String")); type.appendChild(new Listitem("整型|Int", "Int")); type.appendChild(new Listitem("日期|Date", "Date")); type.appendChild(new Listitem("长整型|Long", "Long")); type.appendChild(new Listitem("单精度|Single", "Single")); type.appendChild(new Listitem("双精度|Double", "Double")); type.appendChild(new Listitem("货币|Currency", "Currency")); type.appendChild(new Listitem("字节|Byte", "Byte")); type.appendChild(new Listitem("布尔|Boolean", "Boolean")); type.appendChild(new Listitem("时间|Time", "Time")); type.appendChild(new Listitem("日期时间|Datetime", "Datetime")); type.setSelectedIndex(0); Textbox defaultValue = new Textbox(); defaultValue.setId("parameter_" + num); defaultValue.setWidth("80px"); defaultValue.setParent(row); Button delbtn = new Button(); delbtn.setId("delbtd_" + num); delbtn.setLabel("删除"); delbtn.addEventListener("onClick", new DelEventListener(num)); delbtn.setParent(row); } /** * * @功能 监听事件 "删除参数" * */ public class DelEventListener implements EventListener { int no; public DelEventListener(int no) { this.no = no; } @SuppressWarnings("unchecked") public void onEvent(Event arg0) throws Exception { // 移除才操作 win.getFellow("row_" + no).detach(); // 改变现有的,该行以后的所有行,上移一位 for (int i = no + 1; i <= num; i++) { int j = i - 1; win.getFellow("row_" + i).setId("row_" + j); win.getFellow("name_" + i).setId("name_" + j); win.getFellow("type_" + i).setId("type_" + j); win.getFellow("parameter_" + i).setId("parameter_" + j); Button bun = (Button) win.getFellow("delbtd_" + i); Iterator ite = bun.getListenerIterator("onClick"); bun.removeEventListener("onClick", (EventListener) ite.next()); bun.setId("delbtd_" + j); bun.addEventListener("onClick", new DelEventListener(j)); } num--; } } /** * 保存选择 */ @SuppressWarnings("unchecked") public void saveParameter() { Map map = new HashMap(); // 定位到待保存的每一行 for (int i = 1; i <= num; i++) { // 获取页面的输入值 String name = ((Textbox) this.getFellow("name_" + i)).getValue() .trim(); String type = (String) ((Listbox) this.getFellow("type_" + i)) .getSelectedItem().getValue(); String defaultValue = ((Textbox) this.getFellow("parameter_" + i)) .getValue(); // 当name不为空且不重复,则把页面获取的数据存入Parameter对象 if (!"".equals(name) && !map.containsKey(name)) { Parameter tempparameter = new Parameter(); tempparameter.setName(name); tempparameter.setType(type); tempparameter.setDefaultValue(defaultValue); // 再以name为键Parameter对象为值,存入一个Map对象 map.put(name, tempparameter); } else if (map.containsKey(name)) { Message.showInfo("第" + i + "行参数名已存在"); return; } else { Message.showInfo("第" + i + "行参数名不能为空"); return; } } // 把已存的map作为参数列与report关联,并初始化页面 num = 0; inforreport.setParameters(map); this.initiPage(inforreport.getParameters()); Message.showInfo("保存成功!"); } }
发表评论
-
采用java.util.concurrent.Semaphore 类实现对资源限制访问量
2010-10-27 14:59 1960package com.citicbank.vipfund.w ... -
zk中message的封装
2009-06-14 16:23 1972最近,用zk的message老感觉填写东西很麻烦,就对它做了此 ... -
zk如何调用本地javascript代码向服务器端发送数据
2009-06-11 20:55 4854今天,折腾了一个上午,加下午1个小时,终于实现了zk页面中,如 ... -
使用zk的bandbox和listbox实现的一个具有搜索功能的combobox(实现后台分页)
2009-06-10 14:37 3955在图片附件中有效果图,可以先看一下. 先说下来由:因 ... -
试着用zk结合hibernaet实现分页查询
2009-06-10 14:14 2660原文:http://www.iteye.com/topic/2 ... -
根据sql查询实现zk Listbox翻页显示数据
2009-06-10 14:07 2409最近一直在研究如何封装zk的Listbox,实现简单的 ... -
zk中定义布局模版实现
2009-06-02 23:03 3102在项目的开发过程中,有些布局是固定的,为了布局的统一,通常会制 ... -
zk框架中常见问题的解决续
2009-06-02 21:02 30871、局部刷新 /** * 刷新页面* */ ... -
zk框架中常见问题的解决
2009-06-01 22:10 119251、打开浏览器窗口常用于超链接 /** * 重新打开 ... -
zk中zul页面中组件的id和java类中的变量绑定实现
2009-06-01 21:58 7118zul 页面 index.zul <?xml ver ... -
zk组件开发指南(3)
2009-06-01 21:01 50793.展现层 在客户端,展 ... -
zk组件开发指南(2)
2009-06-01 20:52 43212. 句柄Handle 句柄是运行在服务器端可以被应 ... -
zk组件开发指南(1)
2009-06-01 20:09 37981.简介 ... -
zk组件开发指南(目录)
2009-06-01 19:40 2813声明:本人翻译水平有限,有误之处请多指教。 ...
相关推荐
结合了LabelElement和Image的功能,可以在同一组件中同时显示文本和图片。 - **示例代码**: ```java // 创建一个LabelImageElement实例 LabelImageElement labelImage = new LabelImageElement(); labelImage....
5. **封装设计**:在项目中,开发者可能会创建一个或多个类来封装ZooKeeper的操作,提供更简洁的接口,如`createNode()`, `deleteNode()`, `readData()`, `writeData()`等,同时处理异常和会话管理。 6. **Maven...
每个组件都有自己的属性、事件和行为,可以通过简单的 XML 或 Java 代码进行配置和绑定。 2. **事件处理**: ZK 的事件处理机制允许开发者直接在服务器端响应用户的操作,减少了客户端与服务器之间的通信负担,提高...
ZUL文件类似于HTML,但包含了更多与ZK框架相关的指令,使得动态和交互性的页面构建更为便捷。 在ZK中,事件处理是其核心特性之一。当用户与UI组件交互时,事件会被触发并由服务器端处理。这种事件驱动模型使得...
文档会介绍ZUL的基本语法和组件标签,以及如何通过ZUL实现动态行为。 对于开发工具和集成环境,文档也会有所提及,如如何在Eclipse或IntelliJ IDEA中配置ZK项目,以及使用ZK Studio或ZK Developer插件提升开发效率...
`@Factory`通常用于创建组件实例,而`@Compose`用于组织多个组件,形成更复杂的视图结构。 7. `@SpringBean`:如果你的项目使用了Spring框架,此注解可以帮助你在ZK组件中注入Spring管理的bean。 在ZKDemo系列中,...
**ZK中文开发手册**是针对ZK框架的详尽指南,旨在帮助开发者更好地理解和使用这一强大的组件库和事件驱动的Java应用框架。ZK框架主要用于构建富客户端Web应用程序,它提供了一种简单的方式来创建交互式的用户界面,...
2. **组件使用**:书中详细介绍了各种组件的属性、事件和方法,帮助你熟练掌握每个组件的用法。 3. **事件处理**:讲解如何绑定事件监听器,处理客户端与服务器之间的交互,以及自定义事件的创建和传播。 4. **...
- **页面**:由多个组件组成,代表了一个具体的用户界面。 - **桌面**:可以包含多个页面,类似于浏览器中的 Tab 页面。 - **组件树的森林**:ZK 使用组件树的概念来组织 UI 结构,每个页面都是一个组件树的根节点。...
- **组件模型**:ZK通过组件化的思想构建用户界面,每个UI元素都是一个组件。 - **事件系统**:ZK提供了一个强大的事件处理机制,支持各种类型的事件,如鼠标点击、键盘输入等。 - **数据绑定**:ZK支持将UI组件与...
【ZK学习开发】 ZK是一个基于Java的轻量级MVC框架,专注...在实际开发中,理解每个组件的功能、属性和事件,以及如何组合使用,是掌握ZK的关键。通过深入学习和实践,你可以利用ZK构建出高效、用户体验优良的Web应用。
你可以通过EL表达式`${requestScope.arg.self}`或Java代码来获取这个组件实例。例如: ```java Component self = (Component)((Map)request.getAttribute("arg")).get("self"); ``` 在生成组件的HTML标记时,需要...
综上所述,ZK框架是Java开发中的一个强大工具,特别适合那些希望简化AJAX应用开发的开发者。通过结合使用ZK、Dojo和JSF等技术,可以构建出功能丰富的、具有高度交互性的Web应用。同时,通过学习"zk手册3.5.1.chm"和...
实际开发中,需要将多个组件结合,实现复杂的业务功能。例如,表单组件(Form)与数据绑定(Data Binding)的结合,可以方便地处理用户输入。 - 自定义组件是提升应用灵活性的关键,通过继承已有的ZK组件,或使用...
5. **Composer**:Composer是ZK中的一个关键概念,它是负责组件行为和状态管理的类。通过实现Composer,开发者可以控制组件的生命周期,监听和响应用户交互,实现复杂的业务逻辑。 6. **Scriplet**:Scriplet是ZK中...
整个过程涉及多个层面的技术整合。 - **整合持久层**:选择适合的持久层技术(如Hibernate)并将其与ZK框架结合。 - **整合Spring**:使用Spring框架管理应用程序中的依赖关系和业务逻辑。 通过以上步骤,开发者...
5. **国际化与本地化**:ZK支持多语言环境,开发者可以通过定义资源包来实现应用的国际化。这使得应用程序可以根据用户的语言设置显示相应的文本和格式。 6. **SUL(Simple User Logic)和ZUML(ZK User Markup ...
【描述】中的关键信息表明,这个DEMO是为了教学目的而创建的,它展示了在学习Ajax框架ZK的过程中,如何有效地将portal功能(可能指的是可自定义布局和组件的特性)与ZK框架相结合。"很合理地实现了portal拖动与ZK的...
3. **组件库**:ZK拥有一个丰富的组件库,包括各种UI控件,如按钮、表格、树形视图等,这些组件都内置了Ajax功能,可以实现异步数据交换。 4. **MVVM模式**:ZK支持Model-View-ViewModel(MVVM)设计模式,这使得...
在这个“ZK 国际化(动态切换资源文件)1.0”主题中,我们将深入探讨如何实现ZK应用中的国际化,特别是如何动态地切换资源文件以支持多语言环境。 1. **ZK资源文件**:在ZK框架中,资源文件通常是以.properties格式...