JSF 1.2 исключение при восстановлении представления с истекшим сеансом - PullRequest
0 голосов
/ 31 октября 2011

Мы недавно перешли на WebSphere 7.0 с 6.1, а также обновили с JSF1.1 до JSF1.2.Каждый раз, когда сеанс истекает и что-либо отправляется через браузер, я теперь получаю исключение:

Caused by: javax.faces.application.ViewExpiredException: viewId:/Foo/Bar.jsp - View /Foo/Bar.jsp could not be restored.

Как я могу предотвратить эту ошибку?

  • Результаты запроса выводятся на той же странице, что и поля ввода.
  • Я использую для этой страницы бин сессионной области.

Редактировать: Это похоже на проблему миграции WAS 7.0 / JSF 1.2, см. https://www.ibm.com/developerworks/forums/thread.jspa?threadID=332460&tstart=30 (ответ не предоставлен)

BalusC объясняет, почему это происходит javax.faces.application.ViewExpiredException: Вид не может быть восстановлен .Но почему этого не произошло раньше?Несколько приложений работали нормально до миграции.

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Это не ново для JSF 1.2 и также не имеет ничего общего с Websphere.

Я предполагаю, что у вас ранее было состояние, сохраненное на клиенте, и, таким образом, вы никогда раньше не сталкивались с этим исключением.По умолчанию в JSF сохраняется состояние на сервере.Вы можете явно запросить состояние на клиенте, указав в файле web.xml следующее:

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>

Более подробный ответ см. В этом вопросе: Почему JSF сохраняет состояние компонентов пользовательского интерфейса на сервере?

0 голосов
/ 31 октября 2011

Вы это проверяли? Обработка «сеанса истекла» в веб-приложении JSF, работающем в JBoss AS 5

По крайней мере, так я обрабатываю истечение сеанса в моем приложении JSF.

Надеюсь, это поможет Стивен

...