【发布时间】:2012-02-07 13:16:36
【问题描述】:
我在执行用户会话超时到期时遇到问题。在我们的项目中,我们使用 JSF 作为网页设计框架,使用 primefaces 作为 Facelet 组件。我在开发中开发了以下代码:
<p:idleMonitor onidle="idleDialog.show();" rendered="#{loginBean.loggedIn}" timeout="#{loginBean.activeUser.userTimeOut}" />
<p:confirmDialog header="#{lang.signOut}" message="#{lang.signOutMess}" widgetVar="idleDialog" modal="true" closable="false" appendToBody="true" >
<p:button outcome="logout.xhtml" value="#{lang.signOut}"/>
</p:confirmDialog>
上面的代码非常适合具有短暂超时(例如 1-20 分钟)的用户。它会自动抛出带有 signOutMess 的确认对话框。但是,相同的代码不适用于具有较高超时(例如一小时)的用户。它不是抛出确认对话框,而是从系统中注销用户。实际上,例如,如果用户超时 - 一小时时间进入系统中的一个屏幕并在该帧上保持空闲一小时,则屏幕不会更改,但是当用户尝试在系统上打开另一个帧时,它直接指向 logout.xhtml 这实际上是目标并使用户从系统中退出,但我想再次声明,它不会抛出 confirmDialog。
对于这种情况,你的朋友会推荐我做什么?
此致……
【问题讨论】:
标签: java jsf primefaces session-timeout