Java 在ZK中,在我的GenericForwardComposer类中,如何捕获所有onClick和onChange事件?

Java 在ZK中,在我的GenericForwardComposer类中,如何捕获所有onClick和onChange事件?,java,ajax,zk,Java,Ajax,Zk,我知道,如果我用匹配的id定义onClick$id方法,我可以捕获特定的按钮或文本字段。我希望有一个通用的onClick something和onChange something方法,当单击任何按钮或更新任何文本字段时调用该方法。ZK框架有可能做到这一点吗?您可以通过两种方式做到这一点 1) 在控制器上定义单个事件处理程序,并将所有其他组件事件转发给该事件处理程序。例如,考虑这个具有3个按钮组件的示例ZUML文件 <zk> <window id="mainwin" border

我知道,如果我用匹配的id定义onClick$id方法,我可以捕获特定的按钮或文本字段。我希望有一个通用的onClick something和onChange something方法,当单击任何按钮或更新任何文本字段时调用该方法。ZK框架有可能做到这一点吗?

您可以通过两种方式做到这一点

1) 在控制器上定义单个事件处理程序,并将所有其他组件事件转发给该事件处理程序。例如,考虑这个具有3个按钮组件

的示例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>
现在,对于每个按钮,您可以使用forward属性并定义目标组件以及要以以下格式处理的事件forward=“event name=target component.target event”。有关更多详细信息,请参阅转发属性引用

2) 在ZK6中,有一种更优雅的方法来实现这一点,即使用SelectorComposer和注释来定义事件处理程序。例如

@Listen("onClick = window > button") 
public void onClickAnyButton() {
  // ...    
}
有关Selector Composer的更多详细信息,请参阅

@Listen("onClick = window > button") 
public void onClickAnyButton() {
  // ...    
}