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