Как обрабатывать истечение сеанса и ViewExpiredException в JSF 2?

Рассмотрим следующий сценарий. Я нажимаю кнопку отправки формы JSF после истечения времени ожидания сеанса. Браузер отображает сообщение об исключении:

ViewExpiredException: контекст представления не может быть восстановлен

То, что я хочу сделать, это автоматически перенаправить на домашнюю страницу веб-сайта после истечения сеанса. Какой механизм для этого? Любая помощь приветствуется.

1 ответ

Решение

Чтобы обработать исключение всякий раз, когда пользователь вызывает синхронный запрос POST на странице, когда истек срок сеанса HTTP и для метода сохранения состояния представления JSF установлено значение server добавить <error-page> к web.xml который ловит JSF ViewExpiredException и показывает домашнюю страницу.

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

Для обработки исключения в асинхронных (ajax) запросах также необходимо реализовать пользовательский ExceptionHandler как ответили в Sout timeout и ViewExpiredException обработка JJF/PrimeFaces AJAX-запроса

Смотрите также:

Другие вопросы по тегам