【问题标题】:How can I log UI events in ZK?如何在 ZK 中记录 UI 事件?
【发布时间】:2012-10-04 16:37:43
【问题描述】:

我正在使用一个大型 ZK / Spring 应用程序,我想知道我是否可以以某种方式将跟踪样式日志记录添加到所有 UI 元素,但不向每个单独的元素添加日志语句。 (我希望能够跟踪从 UI 启动的事件。)

谢谢!

【问题讨论】:

    标签: java spring logging zk


    【解决方案1】:

    假设您想在服务器端记录所有 UI 事件,请像这样实现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() 来找出事件的发送位置?
    • Well Event 通常是发布/发送到目标组件,甚至在 beforeProcessEvent 中,您也可以通过 Event 对象访问目标组件信息,例如 event.getTarget() 您在寻找哪些具体信息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 2013-07-31
    • 2018-10-06
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多