У меня есть бэк-компонент, который является ViewScoped
. У меня есть ajax включен SelectBooleanCheckbox
es в форме. Пример:selectBooleanCheckbox не запускает идентификатор viewstate
<p:selectBooleanCheckbox value="#{formBean.value2}">
<p:ajax update=":theform"/>
</p:selectBooleanCheckbox>
Обычно, некоторые скрытые поля ввода должны быть в HTML, чтобы пройти через ViewState ID. Проблема в том, что они не инициируются при первом запросе страницы. Когда я нажимаю один из флажков, форма (и, соответственно, флажки) обновляется. С этого момента идентификатор состояния представления отправляется с этими флажками, поэтому состояние просмотра может быть сохранено.
Самая большая проблема заключается в том, что при первом вызове ajax запускается набор новых компонентов ViewScoped и поэтому я теряю данные о первом действии. С этого момента все работает нормально.
Может ли кто-нибудь дать мне какие-либо указания о том, что может быть проблемой?
Точный код:
<p:panel header="Schedule" toggleable="true">
<form>
<p:outputPanel id="schedule">
<ui:repeat var="scheduleDay" value="#{jobBean.jobScheduleDays}">
<div>
<p:selectBooleanCheckbox value="#{scheduleDay.selected}" style="margin:4px">
<p:ajax update=":schedule" />
</p:selectBooleanCheckbox>
<h:outputText value="#{scheduleDay.readableDay}" style="text-transform:capitalize"/>
</div>
</ui:repeat>
</p:outputPanel>
</form>
</p:panel>
Является ли родительский компонент рассматриваемой формы визуализирован другим запросом ajax заранее? Если это так, то ваша проблема совпадает с пунктом 7 http://stackoverflow.com/questions/2118656/hcommandlink-hcommandbutton-is-not-being-invoked/2120183#2120183 Обратите внимание, что эта конкретная проблема полностью не связана с флажком, у вас была бы такая же проблема при использовании, например, '' вместо этого. –
BalusC
Нет, это не тот случай. Я добавил свой код в начальный пост. Исправление, на которое вы указывали, не помогает мне сразу. Я не могу найти, как установить атрибут render (я думаю, что он недоступен?). – ChristopherS
Таким образом, вы используете простой HTML '