Jsf 使用ajax/update时,p:panel和p:fieldset出现折叠状态问题

Jsf 使用ajax/update时,p:panel和p:fieldset出现折叠状态问题,jsf,primefaces,Jsf,Primefaces,我正在表单中使用一个p:对话框来执行搜索。该对话框有一个可切换的嵌套p:面板,打开对话框时必须折叠该面板 <h:form> ... <p:commandButton value="open search" actionListener="#{searchBean.initSearch}" process="@this" oncomplete="search_dlg.show()" update="search" /> &

我正在表单中使用一个p:对话框来执行搜索。该对话框有一个可切换的嵌套p:面板,打开对话框时必须折叠该面板

<h:form>
  ...

  <p:commandButton value="open search" 
    actionListener="#{searchBean.initSearch}"
    process="@this"
    oncomplete="search_dlg.show()" 
    update="search" />

  <p:dialog id="search" widgetVar="search_dlg" visible="false">
    ...
     <p:panel header="..." toggleable="true" collapsed="true">
      ...
     </p:panel>

     <p:commandButton value="do search" 
       actionListener="..."
       process="search"
       oncomplete="search_dlg.hide()" 
       update="page" />

  </p:dialog>
</h:form>
因此,您可能会认为,执行
update=“search”
将导致从bean读取崩溃状态。但事实并非如此!甚至没有调用getter
isPanelCollapsed()

这种行为是否有充分的理由,或者这是p:panel和p:fieldset中的错误


使用PF 3.4.1,但由于我在变更日志中找不到条目,因此该问题在实际的PF 4.0.1版本中应该是相同的。

我在使用时遇到了相同的问题' p:layout fullpage=“true”,所有p:layoutUnit都无法在p:layout标签中折叠。最后我发现原因是p:layout标签被h:form标签包装了。在我将h:form移动到p:panel之后,折叠函数运行良好,如下所示


...

这不是一个真正的答案,但这里描述了一个解决方法:在我看来,它使代码更难阅读,但它帮助我实现了目标。所以我的问题仍然是:上面描述的行为是一个bug还是一个特性?我在PF 4中也看到了这一点。由于某些原因,折叠的属性没有用bean值更新。我在那里放了一些日志消息以进行验证。它也是间歇性的。有时它是有效的;有时候不是。您的解决方案也有同样的问题。正在调用toggle(),但它有时似乎不会更新组件。但是,如果我在控制台中执行此操作,它会工作。我把它放在文档加载处理程序中只是为了确定。
<p:panel header="..." toggleable="true" collapsed="#{searchBean.panelCollapsed}>
private boolean panelCollapsed;

public void initSearch() {
   panelCollapsed = true;
}

public boolean isPanelCollapsed() {
   return panelCollapsed;
}

public void setPanelCollapsed(boolean panelCollapsed) {
   this.panelCollapsed = panelCollapsed;
}