如何在JSF 2中处理会话到期和ViewExpiredException?

考虑以下情况。 在会话超时(过期)之后,我单击一个JSF表单的提交button。 浏览器显示一些exception消息:

ViewExpiredException:视图上下文无法恢复

我想要做的是在会话过期后自动redirect到网站的主页。 这是什么机制? 任何帮助将非常感激。

要处理exception,只要用户在HTTP会话过期并且JSF视图状态保存方法设置为server时调用页面上的同步POST请求,请将<error-page>到捕获JSF的web.xmlViewExpiredException并显示主页。

 <error-page> <exception-type>javax.faces.application.ViewExpiredException</exception-type> <location>/home.xhtml</location> </error-page> 

为了处理asynchronous(ajax)请求上的exception,您需要实现一个自定义的ExceptionHandler , 并在JSF / PrimeFaces ajax请求的Session timeout和ViewExpiredException处理中得到回应

也可以看看:

  • javax.faces.application.ViewExpiredException:无法恢复视图