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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值