Java 如何使用pimefaces实现会话超时处理?
我正在尝试每30分钟处理一次应用程序的会话超时。我的规范:在用户会话无效后登录失败时,我必须重定向到登录页面 用户在超时后被重定向到注销操作以使会话无效 我不熟悉素面,我尝试过这个,但没有用:Java 如何使用pimefaces实现会话超时处理?,java,jsf,session,primefaces,session-timeout,Java,Jsf,Session,Primefaces,Session Timeout,我正在尝试每30分钟处理一次应用程序的会话超时。我的规范:在用户会话无效后登录失败时,我必须重定向到登录页面 用户在超时后被重定向到注销操作以使会话无效 我不熟悉素面,我尝试过这个,但没有用: <session-config> <session-timeout> 1 </session-timeout> <error-page> <exception-type>javax.faces.applicati
<session-config>
<session-timeout> 1 </session-timeout>
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>faces/login.xhtml</location>
</error-page>
</session-config>
1.
javax.faces.application.ViewExpiredException
faces/login.xhtml
终于找到了解决方案
我在这里使用的是p:idleMonitor
。它将在内部进行处理
<p:idleMonitor timeout="#{login.sessionTimeoutInterval}">
<p:ajax event="idle" listener="#{login.sessionIdleListener}" />
</p:idleMonitor>
<p:confirmDialog closable="false" id="sessionExpiredDlg"
message="Your session expired."
header="#{msgs['confirmDialog.initiatingDestroyProcess.label']}"
severity="alert" widgetVar="sessionExpiredConfirmation" style="z-index: 25000">
<p:commandButton id="confirmRouteDel" value="Ok"
oncomplete="sessionExpiredConfirmation.hide()"
actionListener="#{login.logoutAction}"/>
看看这个
其中有两个示例。可能重复的
public void sessionIdleListener() {
RequestContext context = RequestContext.getCurrentInstance();
context.execute("sessionExpiredConfirmation.show()");
}