Предполагая, что вы хотите, чтобы все события пользовательского интерфейса на стороне сервера, пожалуйста, реализовать EventInterceptor как этот
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.EventInterceptor;
public class LogEventInterceptor implements EventInterceptor {
public Event beforeProcessEvent(Event event) {
System.out.println(event.getName() + " event received for + "
+ event.getTarget().getId() + "!!!");
return event;
}
// rest of the impl
, а затем настроить его в zk.xml, как показано ниже (см here для более подробной информации)
<listener>
<listener-class>foo.LogEventInterceptor</listener-class>
</listener>
Для простого ZUL файла, как этот
<window border="normal" title="Intercepting UI Events demo">
<button id="helloBtn" label="Click me to Say hello"
onClick='alert("Hello !!!")'>
</button>
</window>
, а затем щелкнуть по helloBtn будет генерировать следующий журнал на серверной консоли
onClick event received for + helloBtn !!!
Большое вам спасибо! Он работает очень хорошо. Знаете ли вы, можно ли использовать afterProcessEvent(), чтобы узнать, куда было отправлено событие? – iank
Событие Well обычно отправляется/отправляется целевому компоненту, и даже в beforeProcessEvent у вас есть доступ к информации о целевом компоненте через объект Event, например 'event.getTarget()' Какую конкретную информацию вы ищете? – kachhalimbu