各位开发人员,我在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