Ошибка заключается в следующем -
У меня есть несколько форм в моем приложении JSF.
Если я активирую вызовы AJAX за пределами определенной формы для 20 или более кликов, я получаю исключение "No Saved View State Could be found for the view identifier"
.
ОБНОВЛЕНИЕ 1 Это происходит только при сохранении состояния на сервере. Когда эта опция установлена, проблема не возникает:
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
КОНЕЦ ОБНОВЛЕНИЯ 1
Например, предположим, у меня есть форма A
, форма B
, форма C
в моем приложении:
(Приложение actall очень сложное, я постараюсь донести всю необходимую информацию)
<h:form>
<h:commandButton value="A">
<f:ajax render="@form"/>
<h:commandButton>
<h:form>
<h:form>
<h:commandButton value="B">
<f:ajax render="@form"/>
<h:commandButton>
<h:form>
<h:form>
<h:commandButton value="C">
<f:ajax render="@form"/>
<h:commandButton>
<h:form>
Еще один важный фактор, только одна форма видна в каждый момент времени, другие формы имеют display:none
.
Наконец, все бины имеют сессионную область.
Теперь следующие клики вызовут исключение (для каждой строки последний клик вызывает исключение)
- Ax20, B
- Ax19, B, C
- Ax10, Cx10, B
- Bx5, Cx5, Bx5, Cx5, A
Это не приведет к исключению:
- Ax18, B, C, A.
Другими словами, если кнопка в форме не была нажата в течение последних 20 щелчков, то при следующем щелчке выдается исключение No save view state
.
Все кнопки в одной форме эквивалентны форме, то есть, если form A
имеет кнопки A1
и A2
, то следующее не вызовет исключение:
- A1x20, A2
- A1x19, B, A2
- A1, A2x20, B, A1
Есть идеи?!? Это сводит меня с ума.