`

zk中zul页面中组件的id和java类中的变量绑定实现

阅读更多
zul 页面 index.zul
<?xml version="1.0" encoding="UTF-8"?>
<zk>
 <window title="zk使用apply属性关联后台Java类" border="normal"
  apply="com.civcse.main.MainLayoutComposer" width="300px">
  <vbox>
   <label id="resultLab" value="默认值" />
   <textbox id="inputTextbox" />
   <button id="runButton" label="运行" />
  </vbox>
 </window>
</zk>

 

在window组件里面使用apply属性关联到后台java类。

方法1:继承 GenericForwardComposer 抽象类
package com.civcse.main;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;

public class MainLayoutComposer extends GenericForwardComposer {
 /**
  * zul组件对象映射
  */
 private Label resultLab;
 private Textbox inputTextbox;
 /*
  * (non-Javadoc)
  *
  * @see org.zkoss.zk.ui.util.GenericForwardComposer#doAfterCompose(org.zkoss.zk.ui.Component)
  */
 public void doAfterCompose(Component comp) throws Exception {
  super.doAfterCompose(comp); // 必须的,作用:变量和页面中zk组件绑定进行初始化变量
  System.out.println("渲染后执行自定义初始化");
 }
/**
  * onClick$runButton
  *  onClick=事件名称
  *    runButton=对应的Component id
  *  $必须的!
  */ public void onClick$runButton() {
  System.out.println("button click 事件");
  if (!inputTextbox.getText().trim().equals("")) {
   resultLab.setValue(inputTextbox.getText());
  }
 }
}
 

创建过程:1 新建类 MainLayoutComposer 继承 抽象类GenericForwardComposer;
                2 手动添加方法public void doAfterCompose(Component comp) throws Exception {},重写抽象类中的方法;
                3 在doAfterCompose(Componet comp)方法中必须使用super.doAfterCompose(comp); 初始化和zul页面组件关联的属性。

说明:1  把变量绑定到zk组件,变量名必须和zk组件id同名;     
          2  事件绑定格式"事件$zk组件id" 例如onClick$runButton onClick=事件名称, runButton=对应的Component id  $必须的!

方法2:实现接口org.zkoss.zk.ui.util.Composer
package com.cvicse.main;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Components;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.util.Composer;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;

public class MyComposer implements Composer {
 /**
  * zul组件对象映射
  */
 private Label resultLab;
 private Textbox inputTextbox;
 /*
  * (non-Javadoc)
  *
  * @see org.zkoss.zk.ui.util.Composer#doAfterCompose(org.zkoss.zk.ui.Component)
  */
 public void doAfterCompose(Component arg0) throws Exception {
  System.out.println("init.........");
  init(arg0);
 }
 /**  固定写法,必须有的
  * @param component
  */
 public void init(Component component) {
  // 将当前对象的变量和参数对象进行绑定
  Components.wireVariables(component, this);
  // 转发一个当前的事件方法到所对应名称的Component()
  Components.addForwards(component, this);
  // 注册一个监听到当前的对象
  Events.addEventListeners(component, this);
 }
 /**
  * onClick$runButton
  *  onClick=事件名称
  *    runButton=对应的Component id
  *  $必须的!
  */
 public void onClick$runButton() {
  System.out.println("button点击了");
  if (!inputTextbox.getText().trim().equals("")) {
   resultLab.setValue(inputTextbox.getText());
  }
 }

 

说明:1 使用org.zkoss.zk.ui.util.Composer接口可以在方法doAfterCompose(Component arg0)执行渲染后的初始化;
           2 init(Component component) 固定写法详细解释请看代码里的注释。init方法使button按钮发生点击事件能够执行onClick$runButton() 方法,实现了zk组件id和变量的绑定。

总结:

           1.  MyComposer extends GenericForwardComposer || GenericAutowireComposer然后再doAfterCompose调用父类的doAfterCompose方法,这样就不用去写init方法了!

            2. zkdemo 3.5.2使用的是这种方式, zk交流论坛中都是使用方法1,如果类A要继承类B就可以考虑import Composer接口来实现数据绑定功能。

分享到:
评论
3 楼 q994539183 2012-10-11  
2 楼 yufylovefl 2011-03-08  
请问如果使用数据源绑定和spring框架如何写这段代码
1 楼 yinger_fei 2011-01-20  
如果使用use,是不是还需要在zul页面写<?init class="">?

相关推荐

    zul页面和java注解

    整理的比较全面的zul页面注解和java注解,初学zk框架的朋友可以看看,了解注解的功能,便于框架的学习。

    ZK框架学习总结

    ZK的实现完全用java实现,开发过程中不会有任何的JavaScript代码,但是通过将zul文件(ZK的源文件,类似于jsp文件)通过ZK引擎编译后查看页面源代码,结果还是可以看到,ZK实现的本质还是通过JavaScript+CSS来处理...

    zk 数据库操作小例子

    自己写的zk注册例子,大家共同学习: 1.将相应的文件放到合适的位置,其中tomcat-Jndi 是在tomcat... 2.regist.zul是放置在zk项目的WebContent目录下面的。 3.java文件需要在src中建立相应的package并将其放到其中。

    zul studio 安装文件

    zul studio 安装文件 zul studio 安装文件 zul studio 安装文件 zul studio 安装文件

    zkspreadsheet:ZK Spreadsheet是一个基于Web的开源可嵌入的在线电子表格,可在使用纯Java的浏览器中提供Excel的丰富功能。 借助可嵌入的Excel功能,开发人员能够轻松创建交互式,协作和动态的企业应用程序

    ZK试算表ZK Spreadsheet是一个基于Web的开源可嵌入的在线电子表格,可在使用纯Java的浏览器中提供Excel的丰富功能。 借助可嵌入的Excel功能,开发人员可以轻松创建交互式,协作和动态的企业应用程序。 较新的。 更好...

    zk框架 gird 复杂表头的处理

    zk框架中grid复杂表头的处理,包括实现横向滚动条、列错位、列宽度定制、早期版本IE兼容性问题导致没有分割线。 建议下载官网开源demo 【zksandbox】,下载auxheader.zul替换项目中的/zksandbox/WebRoot/grid/...

    ZK Code Completion:ZKCC是用于zul文件的netbeans Java代码完成插件。-开源

    为了获得正确的功能,必须在窗口元素中使用apply属性定义控制器。(请参见屏幕截图示例)如果您... 已知限制:仅建议在控制器中定义的属性,而不建议扩展类的属性。 ZKCC建议认为尚未定义getter / setter方法的属性。

    zk需要的jar

    zkmax.jar zkjar zkflex.jar zui.jar 全部的 ZK运行所需要的jar包,共10个: zcommon.jar、zcommons-el.jar、zhtml.jar、zk.jar、zkex.jar、zkmax.jar、zkplus.jar、zml.jar、zul.jar、zweb.jar

    ZK运行所需的jar包

    ZK运行所需要的jar包,共10个: zcommon.jar、zcommons-el.jar、zhtml.jar、zk.jar、zkex.jar、zkmax.jar、zkplus.jar、zml.jar、zul.jar、zweb.jar

    ZK_Studio_1.0.2

    ZK Studio 1.0.2版本。该版本的主要新特性包括: 支持Eclipse 3.7 支持标记ZUL所注释的事件,在ZUL文件中,与所选部分相同的内容将被高亮显示。

    ZK Unit-开源

    ZK Unit扩展了JUnit以测试您的ZK项目:ZUL页面,编写器,事件处理程序,约束等。 使用ZKUnit进行测试驱动的开发,以实现代码覆盖以及与连续构建系统的集成。

    zkopenlayers:OpenLayers 2 的 ZK 包装器

    该项目使您能够在 Java 或 ZUL 中创建地图、图层和功能,以及服务器端事件处理和更新。下载Maven &lt;dependency&gt;&lt;groupId&gt;org.zkoss&lt;/groupId&gt;&lt;artifactId&gt;zkopenlayers&lt;/artifactId&gt;&lt;version&gt;1.0.0&lt;/version&gt;&lt;/...

    zui动态生成树的代码,zul对extjs的集成

    zui动态生成树的代码,zul对extjs的集成 他能已标签的形式 创建控件 也能在后台控制

    zk api 文档

    Package org.zkoss.zk.ui.metainfo Metainfo representing pages and languages (implementation only). See: Description Interface Summary Annotation The common interface extended by all annotation ...

    论文研究 - 与工作有关的因素在就业个体自我报告的健康不平等中起什么作用? 卢森堡的纵向研究

    设计和设置:纵向数据来自社会经济Liewen zuLétzebuerg/欧洲联盟关于收入和生活条件的调查,该调查自2003年以来每年在卢森堡进行。 参与者:参与者包括727名卢森堡居民(58%的男性),2003年年龄在21至55岁之间,...

    REM - A NetBeans Module for ZK-开源

    REM是用于ZK应用程序开发的NetBeans模块。 它可用于创建ZK Web应用程序,ZUL和ZScripi文档。 它支持ZUL语法突出显示,自动缩进,代码折叠,代码超链接导航和代码完成。 它支持某些组件的调色板。

    ZK Mine-开源

    一个典型的用ZK框架编写的《扫雷》游戏,其外观与Windows版本几乎相同。 源代码是紧凑的,并在单个Zul文件中编写。

    zklatihan:带有ZK,Spring(引导,安全性,数据)和Hibernate的简单宠物诊所

    Zklatihan ZK Spring Hibernate的简单宠物诊所使用的技术ZK Framework 7.0 Spring ...java -jar target / zklatihan-0.0.1-SNAPSHOT.jar 打开您喜欢的浏览器,然后访问url localhost:8080 / petcliniczk / login.zul

    lang-zul-x-exp:基于有限状态和约束语法的分析器和校对工具,以及Zulu语言的语言资源

    数据和实现均已获得许可许可证的许可,该也已在LICENSE中进行了详细说明。在AUTHORS文件中命名的作者可以授予其他许可选择。 使用用于Zulu语言的校对工具和(某些语言只能通过夜间频道使用)。 文献资料 可以在以下...

    Zul-botv1

    安装命令CEK YUTUB 字首/ ! # $%?\~.菲图尔一种列出Fitur :check_mark_button: 制作者 :check_mark_button: 随机的 :check_mark_button: GABUTz :check_mark_button: 其他 :check_mark_button: 下载 :check_mark_...

Global site tag (gtag.js) - Google Analytics