我正在使用JSF,并且在web.xml中有javax.faces.STATE_SAVING_METHOD到客户端。我想要发生的是,当会话超时并且我尝试重定向到另一个页面时,它必须重定向到sessionTimeout.jsf,并且在单击该页面上的按钮时,它必须重定向到login.jsf。我设计了sessionTimeout.jsf。每当会话到期,并且我试图导航到不同的页面时,就会抛出javax.faces.application.ViewExpiredException。我在目标页面中设置了一个会话变量,这样每次它转到该页面时,它都会首先检查该变量,但在这里,它在转到该页面之前抛出异常。如何解决这个问题?
发布于 2010-07-21 12:36:25
发布于 2016-01-12 04:21:28
“每当会话到期时,当我试图导航到不同的页面时,就会抛出javax.faces.application.ViewExpiredException。”
您应该使错误页和登录页等页面成为临时页面,以便在离开会话中的页面时使会话无效。感谢BalusC在这方面的文章:
http://balusc.omnifaces.org/2013/02/stateless-jsf.html
这将确保在操作方法中使会话无效并重定向到不受会话授权过滤器保护的视图时,会话范围内的bean不会立即重新初始化。
发布于 2010-07-21 16:57:57
解决方案是添加:
<a4j:region>
<script language="javascript">
A4J.AJAX.onExpired = function(loc, expiredMsg){
window.location = "/sessionTimeOut.jsf";
}
</script>
</a4j:region>阅读更多in RichFaces guide
https://stackoverflow.com/questions/3296313
复制相似问题