Как обрабатывать истечение сеанса и 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-запроса