JSF 2 / primefaces: p: панель не отображается с помощью ajax? - PullRequest
13 голосов
/ 24 декабря 2010

Я не уверен, нормальное ли это поведение или нет.
Я надеюсь, что мои panel будут отображены только после нажатия кнопки, которая вызывает запрос ajax.

Без использования Ajax работает нормально:

  1. p:panel id="myPanel" rendered="#{myBean.flag}"
  2. p:commandButton ajax="false" action="#{myBean.setFlagToTrue}"
  3. до нажатия кнопки myPanel не отображается (flag = false)
  4. нажатие на кнопку установит флаг в true, и myPanel будет отображаться нормально

Использование ajax не выполняется:

  1. p:panel id="myPanel" rendered="#{myBean.flag}"
  2. p:commandButton ajax="true" action="#{myBean.setFlagToTrue}" update="myPanel"
  3. до нажатия кнопки myPanel не отображается (flag = false)
  4. нажатие на кнопку установит флаг в значение true (как показано в моем файле журнала), и myPanel не будет обработан

Я попытался пропустить визуализированный атрибут, и действительно, ajax работает нормально.
Я могу сказать это, посмотрев на изменения, отраженные внутри панели.

1 Ответ

33 голосов
/ 24 декабря 2010

поместите вашу панель с условным рендерингом в другую и обновите ее. Как это:

<p:outputPanel id="toUpdate">
  <p:panel id="myPanel" rendered="#{myBean.flag}">
  </p:panel>
<p:outputPanel>

<p:commandButton update="toUpdate"/>

Это известная проблема. Элемент не может быть обновлен, если он не существует в DOM.

...