2

我正在学习 j2ee,并从一个简单的登录和注销应用程序开始。我想在会话超时时优雅地处理 javax.faces.application.ViewExpiredException。看了几篇文章,我尝试使用下面的 web.xml 来处理它。

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

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

  1. 从 index.xhtml 登录。这使用户使用 ah:commandbutton 登录到 welcome.xhtml 以进行注销
  2. 让会话过期
  3. 单击注销按钮。如果会话已过期,则应将用户重定向到 index.xhtml

关于我缺少什么的任何想法?根据我对许多帖子的阅读,这似乎是正确的方法。

4

1 回答 1

0

This is not working because ViewExpiredException is wrapped in a ServletException in JSF.

You can try two different solutions:

1- web.xml with ServletException

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

2- faces-config.xml

<error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/index.xhtml</location>
</error-page>
于 2014-01-04T15:06:35.107 回答