以编程方式折叠或展开 p:accordionPanel

Posted

技术标签:

【中文标题】以编程方式折叠或展开 p:accordionPanel【英文标题】:collapse or expand p:accordionPanel programmatically 【发布时间】:2017-05-07 04:40:39 【问题描述】:

我想要实现的是什么?

单击加载按钮后,如果设置了任何一个文本字段,则结果“手风琴面板”过滤器应该展开。

单击加载按钮后,如果未设置所有文本字段,则结果“手风琴面板”过滤器应折叠。

我浏览了手风琴面板 primefaces 文档,但没有发现它有帮助。 http://www.primefaces.org/docs/vdl/3.5/primefaces-p/accordionPanel.html

我已经完成了之前在 *** 上提出的问题,这个问题的答案也不能满足我达到我要求的结果。

Expanding Accordion Panel in PrimeFaces with a RadioButton click

托管豆

包 com.pk.test; 导入 javax.faces.bean.ManagedBean; @ManagedBean(name="testBean") 公共类 AccordionTestBean 私有字符串名称; 私人弦乐学期; 私有字符串年龄; 私有布尔 checkNameTextField = false; 公共无效保存() System.out.println("如果设置了表单的任何一个字段,则关闭过滤器"); System.out.println("名称:"+getName()); System.out.println("年龄:"+getAge()); System.out.println("学期:"+getSemester()); 如果(getName()!= null) setCheckNameTextField(true); //如果名称文本字段设置为一个值,保存点击过滤器将不会折叠或关闭 别的 setCheckNameTextField(假); //如果名称文本字段设置为一个值,保存点击过滤器将折叠 公共字符串 getName() 返回名称; 公共无效集合名称(字符串名称) this.name = 名称; 公共字符串 getSemester() 返回学期; 公共无效setSemester(字符串学期) this.semester = 学期; 公共字符串 getAge() 返回年龄; 公共无效setAge(字符串年龄) this.age = 年龄; 公共布尔 getCheckNameTextField() 返回检查名称文本字段; 公共无效 setCheckNameTextField(布尔 checkNameTextField) this.checkNameTextField = checkNameTextField;

前端文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:p="http://primefaces.org/ui">
<h:head>

</h:head>
<body>
    <h:form id="formId">
        <p:accordionPanel id="accordion" cache="false" activeIndex="-1"
            style="margin-bottom:20px;width:330px;" widgetVar="acc">
            <p:ajax event="tabClose" listener="#testBean.checkNameTextField" />

            <p:tab title="Filter:"
                titleStyle="width:330px;background-color:#DAEDF4">
                <h:panelGrid columns="2">
                    <h:outputLabel value="Name" />
                    <h:inputText value="#testBean.name" />

                    <h:outputLabel value="Age" />
                    <h:inputText value="#testBean.age" />

                    <h:outputLabel value="Semester" />
                    <h:inputText value="#testBean.semester" />

                </h:panelGrid>
                <p:commandButton icon="ui-icon-save" value="Save"
                    action="#testBean.save"
                    onclick="PF('formId:accordion').hide();" />
            </p:tab>
        </p:accordionPanel>
    </h:form>

</body>
</html>

【问题讨论】:

【参考方案1】:

我不明白您要做什么,但是要展开/折叠手风琴面板,您可以使用它

展开:PF('accordian-widgetVar').select(index)

折叠:PF('accordian-widgetVar').unselect(index)

其中accordian-widgetVar 是您的手风琴面板的属性widgetVar 的值,index 是您要展开/折叠的选项卡的索引

您也可以像这样从 bean 执行它 RequestContext.getCurrentInstance().execute("PF('accordian-widgetVar').unselect(index)");

【讨论】:

以上是关于以编程方式折叠或展开 p:accordionPanel的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式折叠或展开 p:accordionPanel

我可以在 Visual Studio 2012 中以编程方式折叠/展开某个名称的所有预处理器块吗?

Swft3 (RxSwift, RxCocoa) - TableView 使用响应式编程展开和折叠概念

Xcode 单击时折叠视图或元素

在 ACE 编辑器中以编程方式折叠代码

展开/折叠所有数据