JSFViewExpiredException handling from web.xml 不起作用



我正在学习j2ee,并从一个简单的登录和注销应用程序开始。我想在会话超时时优雅地处理javax.faces.application.ViewExpiredException。查看了几篇帖子,我尝试通过网络处理它.xml使用以下方法。

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

但是,这仍然会导致后端出现相同的异常。以下是我重复以重现问题的步骤:

  1. 从索引.xhtml登录。这让用户欢迎.xhtml带有用于注销的 h:命令按钮
  2. 让会话过期
  3. 单击注销按钮。如果会话已过期,则应将用户重定向到索引.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>

最新更新