jsf - p :panel and p:fieldset issue with collapsed state when using ajax/update

标签 jsf primefaces

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

<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>

第一次通过按打开搜索 按钮打开对话框时,面板会按原样折叠。但是,当它随后被切换为打开并按下搜索按钮并执行发布对话框部分时,当对话框稍后再次打开时,opend 状态仍然存在。所以看起来最后的折叠状态保存在组件树中。即使是以下内容也不会改变该行为:

<p:panel header="..." toggleable="true" collapsed="#{searchBean.panelCollapsed}>

搜索 bean :

private boolean panelCollapsed;

public void initSearch() {
   panelCollapsed = true;
}

public boolean isPanelCollapsed() {
   return panelCollapsed;
}

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

因此您会认为,执行 update="search" 会导致从 bean 读取折叠状态蜂鸣。但事实并非如此! getter isPanelCollapsed() 甚至都没有被调用!

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

使用 PF 3.4.1 但由于我无法在 changeLogs 中找到条目,这个问题在实际 PF 版本 4.0.1 中应该是相同的。

最佳答案

我在使用'时遇到了同样的问题 p:layout fullpage="true",所有的p:layoutUnit都无法折叠在p:layout标签中。最后我发现原因是因为 p:layout 标签被 h:form 标签包裹了。在我将 h:form 移动到 p:panel 后,折叠功能工作正常,如下所示

<p:panel collapsed="true">
   <h:form>
   ...
   </h:form>
</p:panel>

关于jsf - p :panel and p:fieldset issue with collapsed state when using ajax/update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19543687/

相关文章:

ajax - 为什么 FullAjaxExceptionHandler 不简单地执行 ExternalContext#redirect()?

java - 在 JSF+Facelets 中迭代 HashMap.values()

ajax - 从 LazyDataModel#load() 抛出的异常不会被 ExceptionHandler 捕获

css - 如何在没有 <h :panelGroup>? 的情况下实现对齐的对话框布局

java - JSF, writeAttribute ("value", str, null) 通过 ValueExpression.getValue() 获得的字符串失败

javascript - PrimeFaces SelectManyCheckbox - 使用 Javascript 取消选中所有复选框

具有属性值表达式语言的 JSF 2 自定义组件不会触发属性 setter

hibernate - 如何在 primefaces 中上传文件时传递参数

java - PrimeFaces 对话框不适用于数据表

primefaces - 如何防止在 h :head 中加载 PrimeFaces theme.css