我正在学习j2ee,并从一个简单的登录和注销应用程序开始。我想在会话超时时优雅地处理javax.faces.application.ViewExpiredException。查看了几篇帖子,我尝试通过网络处理它.xml使用以下方法。
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/index.xhtml</location>
</error-page>
但是,这仍然会导致后端出现相同的异常。以下是我重复以重现问题的步骤:
- 从索引.xhtml登录。这让用户欢迎.xhtml带有用于注销的 h:命令按钮
- 让会话过期
- 单击注销按钮。如果会话已过期,则应将用户重定向到索引.xhtml
知道我错过了什么吗?根据我对许多帖子的阅读,这似乎是正确的方法。
这是
行不通的,因为ViewExpiredException
包装在 JSF 中的ServletException
中。
您可以尝试两种不同的解决方案:
1-web.xml with ServletException
<error-page>
<exception-type>javax.faces.application.ServletException</exception-type>
<location>/index.xhtml</location>
</error-page>
2-面配置.xml
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/index.xhtml</location>
</error-page>