【问题标题】:JSF 2 / primefaces : p:panel not rendered with ajax?JSF 2 / primefaces:p:面板未使用 ajax 呈现?
【发布时间】:2011-05-30 08:48:50
【问题描述】:

我不确定这种行为是否正常。
我希望只有在单击触发ajax 请求的按钮后才会呈现我的panel。

不使用 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 工作正常。
我可以通过查看面板内反映的变化来判断这一点。

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

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

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

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

    【讨论】:

    • 我们为什么要这样做?
    猜你喜欢
    • 2013-09-27
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多