2012-10-04 7 views
2

Я работаю с большим приложением ZK/Spring и хотел бы знать, могу ли я каким-то образом добавить журнал стилей трассировки ко всем элементам пользовательского интерфейса, но без добавления операторов журнала к каждому отдельному элементу. (Я хочу отслеживать события, инициированные из пользовательского интерфейса.)Как я могу регистрировать события пользовательского интерфейса в ZK?

Спасибо!

ответ

2

Предполагая, что вы хотите, чтобы все события пользовательского интерфейса на стороне сервера, пожалуйста, реализовать 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 !!! 
+0

Большое вам спасибо! Он работает очень хорошо. Знаете ли вы, можно ли использовать afterProcessEvent(), чтобы узнать, куда было отправлено событие? – iank

+0

Событие Well обычно отправляется/отправляется целевому компоненту, и даже в beforeProcessEvent у вас есть доступ к информации о целевом компоненте через объект Event, например 'event.getTarget()' Какую конкретную информацию вы ищете? – kachhalimbu

Смежные вопросы