Session JSF-Richfaces-如何知道会话是否超时(在客户端上)

Session JSF-Richfaces-如何知道会话是否超时(在客户端上),session,jsf,richfaces,Session,Jsf,Richfaces,我正在使用JSF-richfaces开发应用程序 该应用程序具有标准登录页面、会话管理,会话过期时间为15分钟 其中一个要求是,当会话过期时,如果用户单击任何链接,我需要显示一个弹出窗口(而不是进入登录页面),其中会显示“您的会话已过期,请再次登录” 如果是单个链接,我可以使用a4j检查会话是否过期。 但在我的例子中,我需要为每个链接和按钮显示“会话退出”警报 任何指向这一点的指针都将帮助我继续前进 提前谢谢。如果会话超时为15分钟,您可以简单地设置一个Javascript调用(使用setTim

我正在使用JSF-richfaces开发应用程序

该应用程序具有标准登录页面、会话管理,会话过期时间为15分钟

其中一个要求是,当会话过期时,如果用户单击任何链接,我需要显示一个弹出窗口(而不是进入登录页面),其中会显示“您的会话已过期,请再次登录”

如果是单个链接,我可以使用a4j检查会话是否过期。 但在我的例子中,我需要为每个链接和按钮显示“会话退出”警报

任何指向这一点的指针都将帮助我继续前进


提前谢谢。

如果会话超时为15分钟,您可以简单地设置一个Javascript调用(使用
setTimeout
方法),该调用将显示一个弹出窗口。如果用户单击一个链接,Javascript调用将被重置,因此只有当用户在同一页面上停留至少15分钟时,才会显示弹出窗口

您可以尝试这样做:

<a4j:outputPanel ajaxRendered="true">
    <script type="text/javascript">
        setTimeout("Richfaces.showModalPanel('xxx');", 900000);
    </script>
</a4j:outputPanel>

。然后,该模板将用于应用程序的每个页面…

Richfaces可以通过定义自己的JS函数来处理会话过期(和其他错误),该函数在情况发生时执行


RichFaces提供了一种在客户端捕获超时(ViewExpiredException)的额外方法

首先,在web.xml中添加以下代码:

    <context-param>
    <param-name>org.ajax4jsf.handleViewExpiredOnClient</param-name>
    <param-value>true</param-value>
</context-param>

org.ajax4jsf.handleViewExpiredOnClient
真的
最后,在页面上添加一些javascript:

<script type="text/javascript">
//<![CDATA[
A4J.AJAX.onError = function(req, status, message) {
    *window.location.reload();*
}
//]]>
</script>

//

谢谢你的回答。这解决了我50%的其他问题,我想知道当用户单击某个按钮或链接时会话是否有效。如何将按钮/链接单击绑定到一些javascript操作?