Тип исключения, который обычно генерируется платформой JavaServer Faces (JSF)

Это исключение будет выбрасываться всякий раз, когда конечный пользователь запускает запрос POST для представления, которое больше не существует на стороне сервера, потому что сеанс истек. Состояния представления по умолчанию сохраняются в сеансе, поэтому они теряются при истечении срока сеанса. POST-запрос будет запущен, когда конечный пользователь нажмет командную кнопку или ссылку на команду или сработает AJAX-запрос JSF.

Это может произойти, если вы оставляете страницу открытой в браузере и отсоединяете ее слишком долго, чтобы истек срок сеанса (обычно это 30 минут, в зависимости от конфигурации сервера). Выполнение запроса POST для такого представления после истечения срока действия сеанса приведет к ViewExpiredException . Это также может произойти, когда браузер загружает страницу из своего кэша, а не с сервера.

Они могут обрабатываться с помощью <error-page> в web.xml или по заказу ExceptionHandler. Их можно при необходимости избежать, установив для параметра контекста javax.faces.STATE_SAVING_METHOD значение client вместо (по умолчанию) server, что затем сохранит сериализованное состояние просмотра как скрытое значение поля ввода формы POST. При сохранении состояния на стороне сервера браузер также должен быть проинструктирован не кэшировать динамические страницы JSF.

Часто задаваемые вопросы: