Несколько вкладок браузера / Windows и NUMBER_OF_VIEWS_IN_SESSION - PullRequest
7 голосов
/ 26 ноября 2011

Мы разрабатываем приложение, в котором мы должны поддерживать несколько вкладок / окон браузера. Наша настройка: MyFaces 2.1, Spring, Orchestra

По умолчанию для org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION установлено значение 20. Это означает, что если вы открываете 21 вкладку в браузере, то страница на первой вкладке перестает работать - состояние просмотра для данного представления отсутствует.

То же самое произойдет, если вы откроете 2 вкладки и запросите 21 просмотр обновлений (т.е. событий Ajax) на второй вкладке. Затем щелчок на первой вкладке приведет к тому же исключению.

Есть ли способ обойти это? Например, возможно ли привязать кэш представления к области диалога?

1 Ответ

3 голосов
/ 26 ноября 2011

Установите метод сохранения состояния просмотра на client вместо server в web.xml.

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

Таким образом, все состояние просмотра будет сохранено (конечно, в сериализованной форме) вскрытое поле ввода формы вместо только идентификатора состояния представления, которое ссылается на состояние в сеансе.Это имеет недостаток, заключающийся в том, что размер страницы может увеличиваться, но это не должно быть основной проблемой, если у вас включено частичное сохранение состояния просмотра (которое должно быть по умолчанию в JSF 2.0).

См. Также:

...