原来只是一个小设定
官方文档
http://books.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml/The_session-config_Element#The_timeout-message_Element
?
?
会话超时元素 (The session-timeout Element)
?
[默认: 0 (根据网页服务器)]
这个设定可以在客户端送出多个请求之间,指定会话有效的秒数。若指定负数则会话永不失效。
默认0秒则使用zk缺省值(定义在/WEB-INF/web.xml中)。
?
超时讯息元素 (The timeout-message Element)
?
?
[可选择的] [5.0.5 开始] [默认: 定义在 MZk.UPDATE_OBSOLETE_PAGE 的讯息]
?
指定会话超时後提示的讯息。本设定只有当timeout-uri没被设定才会生效。
?
<session-config> <device-type>ajax</device-type> <timeout-message>Session timeout. Please reload.</timeout-message> </session-config>
?
国际化
如果你想要指定一个根据地区提示的讯息,你可以指定前缀label接着:key如下
?
<session-config> <device-type>ajax</device-type> <timeout-message>label:timeout</timeout-message> </session-config>
?
然後你必须要准备i3-Label 文件,参考?ZK Developer's Reference.
#默认i3-label.properties #中文i3-label_zh_CN.properties #可允许多行讯息 timeout={ 会话超时,请重整页面 }
?
JavaScript
你可以提供JavaScript代码来取代默认的讯息对话。只要指定前缀script,客户端会直接直接执行你所设定的代码。
例子,你有一个function叫做foo.timeout用来处理超时之後的效果。你可以设定zk.xml如下
<session-config> <device-type>ajax</device-type> <timeout-message>script:foo.timeout('Session Timeout')</timeout-message> </session-config>
?
这段代码必须为Javascript。
?
这是zkdemo超时之後的回应(大概 半小时)
?拆包一下
?
script: $("#z-timeout").remove(); $('body').append('<div id="z-timeout"><span>Timeout, <b>move mouse</b> to refresh...<img src="/zkdemo/images/refresh2.gif" style="display:none;"/></span></div>'); $("#z-timeout").slideDown(1000); $('body').mouseover(function() { $("img","#z-timeout").show(); $('#container > div:gt(0)').fadeOut(1000); setTimeout("location.reload()", 1500); });
?
zk.xml (推测)
?
<timeout-message>script:<![CDATA[ $("#z-timeout").remove(); $('body').append('<div id="z-timeout"><span>Timeout, <b>move mouse</b> to refresh...<img src="/zkdemo/images/refresh2.gif" style="display:none;"/></span></div>'); $("#z-timeout").slideDown(1000); $('body').mouseover(function() { $("img","#z-timeout").show(); $('#container > div:gt(0)').fadeOut(1000); setTimeout("location.reload()", 1500); }); ]]></timeout-message>
?
?
贴个效果
?
1 楼
sun4love
2010-12-16