我知道如果我使用匹配的id定义onClick $ id方法,我可以捕获特定的按钮或文本字段。我想要一个通用的onClick-something和onChange-something方法,当单击任何按钮或更新任何文本字段时,它会被调用。这可能与ZK框架有关吗?
答案 0 :(得分:1)
你可以用两种方式做到这一点。
1)在控制器上定义单个事件处理程序,并将所有其他组件事件转发给该事件处理程序。例如。考虑这个包含3个Button组件的样本ZUML文件
<zk>
<window id="mainwin" border="normal" title="hello" apply="pkg.TestComposer">
<button id="btn1" label="Click Me 1" forward="mainwin.onClick" />
<button id="btn2" label="Click Me 2" forward="mainwin.onClick" />
<button id="btn3" label="Click Me 3" forward="mainwin.onClick" />
</window>
</zk>
现在在应用于包含这3个Button组件的Window组件的控制器中,您可以定义一个onClick事件处理程序,如下所示
public void onClick () throws Exception {
Messagebox.show("Someone clicked!!!");
}
现在,对于每个Button,您可以使用forward属性并定义目标组件以及要按以下格式处理的事件:forward =“event-name = target-component.target-event”。有关更多详细信息,请参阅转发属性参考here。
2)在ZK 6中,使用SelectorComposer和注释定义事件处理程序有更优雅的方法来实现这一点。例如,
@Listen("onClick = window > button")
public void onClickAnyButton() {
// ...
}
有关SelectorComposer的详细信息,请参阅this smalltalk