zul 页面 index.zul

apply="com.civcse.main.MainLayoutComposer" width="300px">

在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接口来实现数据绑定功能。

zul使用java_zk中zul页面中组件的id和java类中的变量绑定实现相关推荐

  1. java ajax data_jquery ajax 方法中传递的data参数,如何在java类中获取

    展开全部 var params="username="+"1"; $.ajax({ type : "POST", //数据发送方式 url ...

  2. thymeleaf 调用java,thymeleaf模板引擎调用java类中的方法(附源码)

    前言 由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决,有的是把问题留在项目的issue里提出,有的是在我的私人博客里留言,还有的则是直接添加我的qq来找我讲自己遇到 ...

  3. Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决)

    Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决) 参考文章: (1)Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决) (2)https://www.cn ...

  4. 【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )

    文章目录 前言 一.Groovy 类中调用 Groovy 脚本 1.参考 Script#evaluate 方法分析 Groovy 类中调用 Groovy 脚本 2.创建 Binding 对象并设置 a ...

  5. Shell-通过shell启动Java类中的main方法 + 通过Shell启动jar包

    文章目录 概述 shell启动Java类中的main方法 启动脚本分析 启动脚本 shell启动jar包 概述 Java程序 运行在linux主机上, 通过shell脚本启动为进程. Java程序中 ...

  6. Java 类中可以覆盖静态方法吗?

    Java 类中可以覆盖静态方法吗? 不,你不能在Java中覆盖静态方法,但在子类中声明一个完全相同的方法不是编译时错误,这称为隐藏在Java中的方法. 你不能覆盖Java中的静态方法,因为方法覆盖基于 ...

  7. 二十三、Java类中重载和重写的区别

    @Author:Runsen @Date:2020/5/31 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...

  8. java sql范围查询语句,java类中写sql语句,查询条件包含换行

    java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...

  9. frida hook java 函数_使用 Frida 来 Hook Java 类中的构造函数(构造函数带重载),获取解密后的js脚本...

    一个APP使用了Auto.js 的加密脚本.我们的任务是将其加密脚本进行解密并dump出来.在  https://www.52pojie.cn/thread-1112407-1-1.html 一文中, ...

  10. JSP中调用java类中的方法

    JSP中调用java类中的方法 1.新建一个项目,在src文件夹下添加一个包:如:test 2.再在包中添加一个类:如 package test; public class conDatabase { ...

最新文章

  1. 21世纪20年代改变世界的十大趋势
  2. 【jdk源码分析】ArrayList的size()==0和isEmpty()
  3. 【游记】NOIP 2017
  4. Microsoft Dynamics CRM 2015 数据管理 之 如何批量导入数据到 正式区(二)系统自带示例数据 安装及教学...
  5. OpenGL在frag着色器中模拟点光源
  6. centos sudo不能运行_如何在Linux中配置sudo访问权限
  7. SharePoint 2010新特性Ribbon
  8. ffmpeg 分辨率 压缩_Ffmpeg 视频压缩的几个关键参数
  9. Ganglia 权威指南-安装Ganglia过程
  10. python 如何调用linux系统中命令
  11. mysql错误诊断_MySQL Server无法启动错误诊断一则
  12. JSP自定义标签开发步骤
  13. 《微观经济学》第二章像经济学家一样思考
  14. 解决:RuntimeError: Tensor for ‘out‘ is on CPU, Tensor for argument #1 ‘self‘ is on CPU, but expected t
  15. linux 升级php 5.3,Linux PHP5.3升级PHP5.5.33 (CentOS)
  16. 解决电脑网络图标消失,电脑连接不上网络的问题总结。
  17. 安信可ESP8266、ESP32、ESP32-S2、ESP32-C3模组的TCP_UDP吞吐量测试使用指导
  18. 网页前端div的高度设置
  19. 只因为给我打了0.1分,重新撸了个记账小程序
  20. pythongbk编码怎么解决_如何解决 Python print 输出文本显示 gbk 编码错误

热门文章

  1. windows下开发人员装机软件一览
  2. linux p2p1网卡,linux下解决P2P终结者
  3. 【Java工具】Java反编译工具:JAD的下载与简单使用
  4. 第十二届全国计算机化学学术会议,中国化学会第十二届全国天然有机化学学术会议通知(第二轮)...
  5. linux配置端口映射
  6. SAP 系统License查看申请及导入
  7. cc2530c语言教程,cc2530程序设计实例之CC2530 RF部分使用—实现点对点收发 - 全文...
  8. 躲避校园网客户端的检测实现客户端移动热点开启
  9. 通达信 c语言,通达信if语句用法,通达信公式编写
  10. c语言程序设计第3版高等教育,C语言程序设计第三3版 何钦铭 颜晖 高等教育出版社 9787040432...