ZK Demo 会话超时(session timeout)设定详解
原来只是一个小设定
会话超时元素 (The session-timeout Element)
[默认: 0 _(根据网页服务器)_]
这个设定可以在客户端送出多个请求之间,指定会话有效的秒数。若指定负数则会话永不失效。
默认0秒则使用zk缺省值(定义在/WEB-INF/web.xml中)。
超时讯息元素 (The timeout-message Element)
[可选择的] [5.0.5 开始] [默认: _定义在 [MZk.UPDATE_OBSOLETE_PAGE](http://docs.zkoss.org/wiki/Msgzk.properties "http://docs.zkoss.org/wiki/Msgzk.properties") 的讯息_]
指定会话超时後提示的讯息。本设定只有当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>**
贴个效果