Вы можете сделать это двумя способами.
1) Определите один обработчик событий на контроллере и перенаправьте все остальные события компонента этому обработчику событий. Например, рассмотрим этот пример файла ZUML, который имеет 3 компонента Button
<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>
Теперь в контроллере, применяемом к компоненту Window, содержащему эти 3 компонента Button, вы можете определить один обработчик события onClick, как показано ниже
public void onClick () throws Exception {
Messagebox.show("Someone clicked!!!");
}
Теперь для каждой кнопки вы можете использовать атрибут forward и определять целевой компонент, а также событие, которое будет обрабатываться, в следующем формате forward = "event-name = target-component.target-event". Для получения более подробной информации см. Ссылку на прямой атрибут здесь .
2) В ZK 6 есть еще более элегантный способ добиться этого, используя SelectorComposer и аннотации для определения обработчиков событий. Например,
@Listen("onClick = window > button")
public void onClickAnyButton() {
// ...
}
Пожалуйста, обратитесь к этой небольшой беседе для более подробной информации о SelectorComposer