Вы можете решить эту проблему, установив метод сохранения состояния на client
вместо server
, чтобы представления сохранялись (конечно, в сериализованной форме) в скрытом поле ввода формы POST, а не в сеансена стороне сервера (на который в свою очередь ссылается JSESSIONID
cookie; поэтому все представления в основном будут потеряны при удалении cookie сеанса или по истечении сеанса).Вы можете сделать это, добавив следующий параметр контекста в web.xml
:
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
Если по какой-либо причине вышеприведенный вариант не подходит, то лучше всего сделать это осторожно, как ошибкуСтраница в web.xml
выглядит следующим образом:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/errors/sessionexpired.jsf</location>
</error-page>
Это не исключение, но, по крайней мере, дает вам возможность сообщить на странице ошибки конечному пользователю о проблеме икакие действия должен предпринять конечный пользователь.Вы могли бы даже позволить странице ошибки указывать на страницу входа в систему и условно отображать сообщение о том, почему конечный пользователь снова сталкивается со страницей входа.
См. Также: