JSF 2/primefaces: p: панель не отображается с помощью ajax?
Я не уверен, нормально ли это поведение или нет.
Я надеюсь, что мой panel
будет отображаться только после нажатия кнопки, которая запускает запрос ajax
.
Не использовать Ajax отлично работает:
-
p:panel id="myPanel" rendered="#{myBean.flag}"
-
p:commandButton ajax="false" action="#{myBean.setFlagToTrue}"
- перед нажатием кнопки myPanel не отображается
(flag = false)
- нажав кнопку, установите флаг в значение true, а myPanel будет рендеринга
Использование ajax не выполняется:
-
p:panel id="myPanel" rendered="#{myBean.flag}"
-
p:commandButton ajax="true" action="#{myBean.setFlagToTrue}" update="myPanel"
- перед нажатием кнопки myPanel не отображается
(flag = false)
- нажав кнопку, установите флаг в true (как показано в моем файле журнала), а myPanel не отображается
Я пробовал исключить атрибут rendered, и действительно, ajax отлично работает.
Я могу сказать, что, посмотрев на изменения, отраженные внутри панели.
Ответы
Ответ 1
поместите вашу панель с условным рендерингом внутри другого и обновите ее. Вот так:
<p:outputPanel id="toUpdate">
<p:panel id="myPanel" rendered="#{myBean.flag}">
</p:panel>
<p:outputPanel>
<p:commandButton update="toUpdate"/>
Это известная проблема. Элемент не может быть обновлен, если он не существует в DOM.