如何在ZK中添加用于重定向的Java方法计时器



各位开发人员,我在ZK上设置Timer方法时遇到了问题,在我的.zul页面中默认的方法是:

<timer id="timer" delay="1000" repeats="false"
onTimer="response.sendRedirect('./Login.zul')" />

但是代码是错误的(我认为beacuse('./Login.zul'),如果我尝试(\"./Login.zul\"),仍然显示错误),我尝试在我的控制器页面中构建如下:

     private Timer timer=new Timer( 1000 );
    public OTPController() {
        timer.setRepeats( true );
        timer.setAttribute( "onTimer","response.sendRedirect("./Login.zul")", Timer.COMPONENT_SCOPE );
        timer.start();
}

但什么也没发生…:(

有人能帮我吗?

也许我必须创建java脚本方法或类似的东西?我仍在努力寻找答案,我阅读了ZK文档,但没有任何帮助。。

感谢您的关注,并为我糟糕的英语感到抱歉:D

您可以尝试以下示例,

<timer id="timer" delay="1000" repeats="false"
    onTimer='Executions.sendRedirect("./Login.zul")' />

onTimer

是一个事件,而不是属性[1]。您应该在Timer组件上使用addEventListener()[2]来添加一个执行实际sendRedirect的方法。例如,在OTPController中,您可以执行

<!-- language: lang-js -->
timer.addEventListener(Events.ON_TIMER, new EventListener() {  
        public void onEvent(Event evt) {  
           Executions.sendRedirect("./Login.zul"); //refer [3]  
    }  
});

[1]http://books.zkoss.org/wiki/ZK_Component_Reference/Essential_Components/Timer#Supported_Events[2]http://books.zkoss.org/wiki/ZK_Developer's_Reference/Event_Handling/Event_Listening#Event_Listener[3]http://books.zkoss.org/wiki/ZK_Developer's_Reference/UI_Patterns/Forward_and_Rerective#Redirect_to_Nother_URL

最新更新