• 1. ZK开发入门 李红广2009.5.20
  • 2. 培训内容一、ZK插件安装 二、ZK开发环境搭建 三、常用功能选讲 1 页面文本框校验 2,zul页面与window类的交互 3,zscript与window类的交互 4,zul组件与javascript的交互 5,页面间的参数传递与接收 6,多个window之间的交互 7,zul与html的整合 8,zul与jsp的整合
  • 3. 培训内容四、常用组件选讲 1,window 2, grid 3, listbox 4, tree 五、事件处理 1,forward 2, on+even name 3, eventListener 4, action 六、学习资料 七、一点学习心得
  • 4. ZK插件安装 Zkstudio: Help->Software Updates->Find And Install ->Search for new features to install ->new Archived Site 选择zkstudio.zip->finish ->… Zkpackage: window->preferences->zk->zk package ->add file 选择zk-bin-prof-3.6.0.zip ->OK 注 eclipse下安装速度可能比较慢,需耐心等待安装 Myeclipse安装速度比较快
  • 5. ZK开发环境搭建 1,导入zk开发所需jar (见基本配置文件夹) 2,在web.xml文件中添加zk的相关配置(见基本配置文件夹) 注 在eclipse下也可以通过创建dynamic web project 自动导入zk环境的配置 Myeclipse下执行1,2操作即可
  • 6. 常用功能选讲1,页面文本框校验 a,zul页面通过win.fun来调用window中的public方法 ,通过forward=“onXxx”调用window中以on开通的方法; b,window通过this.getFellow(“id”)来获取zul页面的组建,从而实现在window类中操作组件。 见实例文件加下的应用 见 学习资料->apply test文件夹 3,zscript与window类的交互 zscript 中调用window中的方法:win.fun() ,其中fun为window中的public方法 zscript 中调用window中的字段:win.name,其中name为window中的public 字段或有get方法的private 字段 在window可以通过this.setVariable(“”,,)为zscript 设置变量 如 List products =getProducts(); setVariable("products", products, true);
  • 7. 常用功能选讲4,zul组件与javascript的交互 a,通过设置组件的action 姓名:
  • 8. 常用功能选讲5,页面间的参数传递与接收 传参
  • 9. 常用功能选讲7,zul与html的整合 代理人分组维护 10. 常用功能选讲8,zul与jsp的整合 在web.xml原有的zk配置的基础上再加上 zkFilter org.zkoss.zk.ui.http.DHtmlLayoutFilter extension html zkFilter *.jsp REQUEST INCLUDE FORWARD ERROR
  • 11. 常用组件选讲1,window 2, grid a,直接初始化
  • 12. 常用组件选讲b,forEach 循环初始化 String[] contacts = new String[] {"Monday", "Tuesday", "Wednesday"};
  • 13. 常用组件选讲 C,动态改变grid 的内容 public class MyRowRender implements RowRenderer { public void render(Row row, Object data) throws Exception { MyVO v=(MyVO)data; new Label(v.getCarrier()).setParent(row); new Label(v.getOri_eng()).setParent(row); new Label(v.getDes_eng()).setParent(row); } } grid.setRowRenderer(new MyRowRender ()); ListModelList listModelList = new ListModelList() grid.setModel(listModelList) listModelList.clear(); listModelList.addAll(volist); //当volist更新是只需重新执行该操作即可
  • 14. 常用组件选讲d,动态增删行 Row row = new Row(); addGrpvoToRow(grpvo,row); row.setParent(gridRows); row.setDraggable("true"); row.setAttribute(AGENT_GROUP_VO, grpvo); row.addEventListener("onRightClick", rowRightClickLsn); row.setContext(rowMenupopup); 要删除某行直接用row.setParent(null);
  • 15. 常用组件选讲3, listbox a,具有以上grid的功能和类似方法 b,下拉单选框: c,下拉多选框: 在上面添加 multiple="true" 4, tree 见实例三 5, button
  • 16. 事件处理1,forward 单击组件后激发指定的在window类中定义的以on开头的方法
  • 17. 事件处理3, eventListener 几乎所有组件都可以添加监听器 例如 Row r =new Row(); r.addEventListener("onRightClick", listener); r.addEventListener("onClick", listener); private EventListener listener=new EventListener(){ public void onEvent(Event e) throws InterruptedException{ if(e.getName().equals("onClick")){ //doSomething //可以通过e.getTarget()获得时间源组件,因此可以将同一个监听器添到不同类型的组件上 } if(e.getName().equals("onRightClick")){ //doSomething } } };
  • 18. 学习资料Zk 官方网站 http://www.zkoss.org 下载最新的 zk-devguide ,和 zkDemo
  • 19. 一点学习心得1,java代码写在zscript中会降低性能,故应尽量将其写在用use指定的class类中; 2,zk-devguide 和 zkDemo是基础,仔细阅读以便知道zk有哪些组件并掌握其基本用法; 3,Zul页面中的所有组件都对应一个实体类,因此我们可以利用eclipse的代码提示功能学习每个组件的方法和属性, zk的功能有很多,而且实现的方法也不唯一,所以应多研究多尝试总结。