2010-12-24 5 views
13

Я не уверен, что это нормально или нет.
Я надеюсь, что мой panel будет отображаться только после нажатия кнопки, которая вызывает запрос ajax.JSF 2/primefaces: p: панель не отображается с ajax?

Не используя Ajax работает отлично:

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

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

ответ

30

положите вашу панель с условным рендерингом внутри другого и обновите ее. Пример:

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

<p:commandButton update="toUpdate"/> 

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

+0

Очень приятно. Работает как магия. Спасибо. – bertie

+1

Зачем нам это нужно? – Makky

+0

это работает, это потрясающе !! спасибо – Spartan

 Смежные вопросы

  • Нет связанных вопросов^_^