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

Sel*_*vin 47 jsf session-timeout jsf-2 viewexpiredexception

请考虑以下情形.在会话超时(过期)后,我点击了JSF表单的提交按钮.浏览器显示一些异常消息:

ViewExpiredException:无法恢复视图上下文

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

Bal*_*usC 91

处理异常每当用户而HTTP会话已经过期调用一个网页内的同步POST请求和保存方法被设定为JSF视图状态server,一个添加<error-page>web.xml该捕获JSF ViewExpiredException并显示主页.

<error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/home.xhtml</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)

要处理异步(ajax)请求的异常,您需要ExceptionHandler会话超时和JSF/PrimeFaces ajax请求的ViewExpiredException处理中实现自定义.

也可以看看:

  • @RajV:显然你的webapp由于某种原因将`FacesServlet`映射到`/ faces/*`而不是`*.xhtml`.只需改变它,以摆脱丑陋的额外`/ faces`路径.这个小配置问题与此处提出的具体问题完全无关. (3认同)