JSF 2 / primefaces:p:面板没有用ajax渲染?

时间:2010-12-24 10:15:51

标签: jsf-2 primefaces

我不确定这种行为是否正常 我希望只有在点击触发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正常
  5. 使用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 未呈现
    5. 我尝试省略了渲染属性,实际上ajax工作得很好 我可以通过查看面板内反映的变化来判断。

1 个答案:

答案 0 :(得分:33)

将带有条件渲染的面板放在另一个面板中并更新它。像这样:

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

<p:commandButton update="toUpdate"/>

这是一个已知问题。如果DOM中不存在该元素,则无法更新该元素。