PrimeFaces ViewExpiredException после перезагрузки страницы

У меня есть wrapper PrimeFaces.ajax.AjaxResponse для обработки ViewExpiredException (перезагрузка страницы):

var handleViewExpired = function (viewId) {
    window.alert('${msg.ajax.viewExpired}');
    window.location.reload();
};

Однако иногда я получал эту ошибку снова и снова, пытаясь щелкнуть любую ссылку на запросы AJAX на сайте:

javax.faces.application.ViewExpiredException: /tree.xhtmlNo saved view state could be found for the view identifier: /tree.xhtml
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:128)

Я делаю обновление неправильно? Что делать, чтобы вызвать полную перезагрузку страницы, например, щелкнуть повторно в браузере? Нужно ли удалять файлы cookie (JSESSIONID, oam.Flash.RENDERMAP.TOKEN)?

Я использую PrimeFaces 3.5 с MyFaces 2.0.7, работающим на WebSphere 7.0.

Ответы

Ответ 1

Если у вас много ( > 15) страниц/представлений/кадров, которые одновременно открываются в сеансе, то может быть полезно следующее.

Вам нужно взглянуть на:

1. numberOfViewsInSession: определяет количество состояний (страниц верхнего уровня) для поддержки операции с кнопками

2. numberOfLogicalViews: определяет количество логических представлений (кадров), которые могут присутствовать на странице (в представлении верхнего уровня)

Быстрое действие, чтобы убедиться, что это важно, чтобы установить эти числа на 500 и увидеть Если они релевантны, то вы можете найти дополнительную информацию по следующим ссылкам:

http://www.java.net/node/681211

Проблема с numberOfViewsInSession и несколькими вкладками