当前位置: 代码迷 >> Web前端 >> ZK Demo 对话超时(session timeout)设定详解
  详细解决方案

ZK Demo 对话超时(session timeout)设定详解

热度:1516   发布时间:2012-11-04 10:42:41.0
ZK Demo 会话超时(session timeout)设定详解

原来只是一个小设定


官方文档
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  
  相关解决方案