Primefaces,如何用另一个按钮折叠layoutUnit?

时间:2012-10-11 03:51:12

标签: java javascript layout jsf-2 primefaces

我在Mojarra-2.1.10上使用primefaces PrimeFaces-3.4,我的整页布局就像this。我如何在顶部制作一个按钮,这将折叠西部layoutUnit?

感谢您的帮助。

PS,早期认为可以这样写:

<layoutUnit position="west" widgetVar='westlayout'> ... </layoutUnit>

//button in the top
<button onlick="westlayout.collapse()"></button>

但遗憾的是,layoutUnit不存在widgetVar属性。

更新1:找到similar question,尝试过。没有为我工作,问题是具有更新属性的按钮无法找到具有此类标识符的文本,我在一个layoutUnit中尝试了,找到了标识符,但也没有用。

2 个答案:

答案 0 :(得分:5)

根据Layout Client Side API,您可以通过 layout widgetWar切换layoutUnit:

<p:layout fullPage="true" widgetVar="layoutWdgt">
    <p:layoutUnit position="north" size="100" header="Top" resizable="true" closable="true" collapsible="true">
        <h:form>
            <p:commandButton value="Toggle" onclick="layoutWdgt.toggle('west')"/>
        </h:form>
    </p:layoutUnit>

    ....

    <p:layoutUnit position="west" size="200" header="Left" resizable="true" closable="true" collapsible="true">
        <h:form>
            <h:outputText value="West Layout unit"/>
        </h:form>
    </p:layoutUnit>
    <p:layoutUnit position="center">
        <h:outputText value="Center Layout unit"/>
    </p:layoutUnit>
</p:layout>

EDITED

从PrimeFaces 4开始,仍然支持id映射,但弃用了PF('XXX')

对于PrimeFaces 5.0及更高版本,您需要使用PF widgetVar来调用客户端API。因此,不需要使用layoutWdgt.toggle('west')来切换西部布局单元,而是需要使用 PF('layoutWdgt')。toggle('west')

答案 1 :(得分:0)

使用Primefaces 6.1:

<p:layout style="min-width:400px;min-height:200px;" widgetVar="layoutWdgt">
    <p:layoutUnit position="west" size="100" minSize="40" maxSize="200" collapsible="true">
        West
         <p:commandButton value="Collapse" onclick="PF('layoutWdgt').toggle('west')"/>
    </p:layoutUnit>
    <p:layoutUnit position="center">
        Center
    </p:layoutUnit>
</p:layout>