Я использую JSF RI 1.1. То, как перенаправить к индексной странице, если сессия испытывает таймаут, происходит?
Есть два способа, которые можно комбинировать:
Используйте заголовок обновления
в HTML-элементе
в сочетании с HttpSession #getMaxInactiveInterval ()
, который возвращает остаток секунд, в течение которых сеанс еще не был запущен.
Этот подход автоматически перенаправит страницу на заданный URL
по истечении сеанса.
Перехватить ViewExpiredException
в web.xml
:
javax.faces.application.ViewExpiredException exception -type>
/index.jsf
Этот подход автоматически перенаправит запрос на указанный <местоположение>
, когда был запущен запрос POST
( h: commandButton
, h: commandLink
и т. д.), когда сеанс истек.
Обратите внимание, что я лично предпочел бы промежуточную страницу с предупреждением «Сеанс истек» или предупреждение, чтобы избежать «wtf?» опыта и, таким образом, улучшить пользовательский опыт. Более того, я бы также предпочел запускать аяксический опрос каждую минуту, когда клиент проявил активность, прослушивая щелчок
и нажатие клавиш
, чтобы время жизни сеанса можно было еще больше отложить.
Вы можете использовать фильтр
, чтобы перехватить конкретное исключение, указывающее тайм-аут, и перенаправить оттуда.