如何在PrimeFaces Accordion Panel中打开所有动态加载的选项卡

时间:2014-01-30 16:31:07

标签: jsf primefaces

我正在将表的内容加载到PrimeFaces 4.0 Accordion Panel中,每行对应一个动态加载的选项卡。我可以这样做,但默认情况下只打开第一个选项卡。

通常情况下,要默认打开多个Accordion面板,请使用activeIndex="tabIndexList",其中tabIndexList是您要打开的标签列表。

例如:

<p:accordionPanel multiple ="true" activeIndex="0,1,2">

但是当使用数据库表行动态加载选项卡时,无法知道编写html代码时将有多少选项卡。

PrimeFaces中是否有一个设置允许所有选项卡默认打开,或者是否可以使用支持bean来计算并传递activeIndex的require字符串,使用类似下面的内容?

<p:accordionPanel multiple ="true" activeIndex="#{backingBean.returnActiveIndexString}">

3 个答案:

答案 0 :(得分:1)

在PrimeFaces(4.0)的实际最新版本之前,没有这样的功能可以打开所有标签。但是如果支持bean返回一个包含Collection的所有索引的String,那么你的方法就可以工作。

像:

public String returnActiveIndexString(){
    totalNumberOfTabs = getTotalNumberOfTabs();
    StringBuilder out = new StringBuilder();
    String prefix = "";
    for(int i = 0; i < totalNumberOfTabs; i++){
        out.append(prefix);
        prefix = ",";
        out.append(i);
    }
    return out.toString();
}

答案 1 :(得分:0)

对我而言,触发点击事件非常重要,因为我必须在点击时初始化一些数据,所以我这样解决了:1。通过将activeTabindex设置为&#34; -1&#34;来关闭所有选项卡, 2.单击每个选项卡。 p:accordionPanel需要具有属性multiple =&#34; true&#34;。

<p:commandButton value="open"
        actionListener="#{beanController.setActiveTabIndex('-1')}"
        update="accordionPanel"
        oncomplete="$('.ui-accordion-header').click();" />

答案 2 :(得分:0)

对我来说,我只是想显示所有打印标签。

动态更新CSS类是最好的方法。

以下是如何使用JQuery:

<span onclick="$('.ui-accordion-content.ui-helper-hidden').css('display','block')" >
  Printable version
</span>
相关问题