Обработка JSFViewExpiredException из web.xml не работает

Я изучаю 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. Это приводит пользователя к файлу welcome.xhtml с кнопкой h:commandbutton для выхода из системы.
  2. Дать сеансу истечь
  3. Нажмите кнопку выхода. Если срок действия сеанса истек, пользователь должен быть перенаправлен на index.xhtml.

Любая идея о том, что мне не хватает? Основываясь на моем чтении многих сообщений, это кажется правильным способом.


person syed    schedule 31.12.2013    source источник


Ответы (1)


Это не работает, потому что ViewExpiredException завернуто в ServletException в JSF.

Вы можете попробовать два разных решения:

1- web.xml с 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>
person StarsSky    schedule 04.01.2014