JSF 中的 ViewExpiredException [重复]
Posted
技术标签:
【中文标题】JSF 中的 ViewExpiredException [重复]【英文标题】:ViewExpiredException in JSF [duplicate] 【发布时间】:2011-03-18 19:13:24 【问题描述】:我正在使用 JSF,并且在 web.xml 中有 javax.faces.STATE_SAVING_METHOD 到客户端。我想要发生的是,当会话超时并且我尝试重定向到另一个页面时,它必须重定向到 sessionTimeout.jsf,并且在单击该页面上的按钮时,它必须重定向到 login.jsf。我设计了 sessionTimeout.jsf。每当会话到期并且我尝试导航到不同的页面时,都会抛出 javax.faces.application.ViewExpiredException。我在目标页面中设置了一个会话变量,以便每次进入该页面时,它首先检查变量,但在进入该页面之前它会抛出异常。如何解决?
【问题讨论】:
通过添加自定义ViewHandler解决。谢谢大家 【参考方案1】:“每当会话到期并且我尝试导航到不同的页面时,都会抛出 javax.faces.application.ViewExpiredException。”
您应该将错误页面和登录页面等页面设置为瞬态,以便在离开会话中页面时会话无效。感谢 BalusC 提供关于此的文章:
http://balusc.omnifaces.org/2013/02/stateless-jsf.html
这将确保在操作方法中使会话无效并重定向到不受会话授权过滤器保护的视图时,不会立即重新初始化会话范围的 bean。
【讨论】:
【参考方案2】:This could help
【讨论】:
我不能将添加到 Web.xml 在页面中提供消息以重新加载...
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>viewExpired.xhtml</location>
</error-page>
【讨论】:
在不必要地发布重复答案之前,请阅读其他答案和其他答案的 cmets。【参考方案4】:解决方法是添加:
<a4j:region>
<script language="javascript">
A4J.AJAX.onExpired = function(loc, expiredMsg)
window.location = "/sessionTimeOut.jsf";
</script>
</a4j:region>
阅读更多in RichFaces guide
【讨论】:
以上是关于JSF 中的 ViewExpiredException [重复]的主要内容,如果未能解决你的问题,请参考以下文章
JSF 中的最佳实践:模型、动作、getter、导航、阶段监听器
JSF 中的 ViewExpiredException [重复]