1

我正在使用带有 JSF 的 RichFaces 来开发一个简单的应用程序。此应用程序的一页包含多个 collapsiblePanel 元素。一些 collapsiblePanel 元素是嵌套的,但不会超过第二层。

我想在页面上提供链接或按钮来展开和折叠页面上的所有 collapsiblePanel 元素。我怎样才能做到这一点?

元素当前使用该switchType="client"属性让客户端处理展开和折叠。我怀疑使用一种ajax代替可能会有所帮助,但我不确定也不知道如何利用它。

更新:如果我包含一个我正在尝试做的例子,我的问题可能更容易理解:

<h:form>
  <a4j:commandButton actionListener="#{bean.setDefaultExpanded(true)}"
                render="reportPanel" value="Expand all" />
  <a4j:commandButton actionListener="#{bean.setDefaultExpanded(false)}"
                render="reportPanel" value="Collapse all" />

  <h:panelGrid id="reportPanel">
    <ui:repeat var="account" value="#{bean.results.entrySet().toArray()}">
      <rich:collapsiblePanel expanded="#{bean.defaultExpanded}">
        <ui:repeat var="chargeGroup" value="#{account.value.entrySet().toArray()}">
          <rich:collapsiblePanel expanded="#{bean.defaultExpanded}">
            <h:outputText value="content: #{chargeGroup.value}" />
          </rich:collapsiblePanel>
        </ui:repeat>
      </rich:collapsiblePanel>
    </ui:repeat>
  </h:panelGrid>
</h:form>
4

2 回答 2

0

具有属性,您可以将<rich:collapsiblePanel>expanded绑定到 bean 属性并从那里控制扩展。像这样的东西

<rich:collapsiblePanel id="panel1" expanded="#{bean.expanded}" …&gt;

<a4j:commandButton actionListener="#{bean.togglePanels()}" 
    … render="panel1, panel2, …"/>

switchType从中提取内容的控件,而不是展开/折叠面板的方式。

于 2013-05-30T14:40:46.230 回答
0

单击单个面板然后全部展开/折叠时,我遇到了同样的问题。这对我有用(richfaces 4.2.3):

<h:commandButton  immediate="true" action="#{controllerBean.toggleMin}"  value="collapse all" >
    <a4j:ajax render="panel1 panel2"></a4j:ajax>
</h:commandButton>
<h:commandButton immediate="true" action="#{controllerBean.toggleMax}" value="expand all">
    <a4j:ajax render="panel1 panel2"></a4j:ajax>
</h:commandButton>
...
<rich:collapsiblePanel id="panel1" immediate="true" expanded="#{modelBean.expanded}" header="Title text" switchType="client">
    ...
</rich:collapsiblePanel>
...
于 2014-05-29T10:18:07.460 回答