【问题标题】:How to hide a h:panelGrid如何隐藏 h:panelGrid
【发布时间】:2014-06-02 17:09:02
【问题描述】:

我有一个<p:selectOneRadio> 和两个<f:selectItem>,我有两个<h:panelGrid>。我想根据所选的<f:selectItem> 隐藏<h:panelGrid> 之一。

<p:selectOneRadio>
    <f:selectItem itemLabel="Hide pnl1" itemValue="1" />
    <f:selectItem itemLabel="Hide pnl2" itemValue="2" />
</p:selectOneRadio>

<h:panelGrid id="pnl1">
    //More stuff here...
</h:panelGrid>

<h:panelGrid id="pnl2">
    //More stuff here...
</h:panelGrid>

在此示例中,如果在收音机中选择了选项 1,我如何隐藏 pnl1

如果在收音机中选择了选项2,我该如何隐藏pnl2

请给我看所需的 Bean 代码。

只应显示一个pnl

【问题讨论】:

    标签: java jsf primefaces hide


    【解决方案1】:

    你可以通过 ajax 来实现。

    <h:form id="frmPanels">
        <p:selectOneRadio id="sorPanelShow" binding="#{sorPanelShow}">
            <f:selectItem itemLabel="Hide pnl1" itemValue="1" />
            <f:selectItem itemLabel="Hide pnl2" itemValue="2" />
            <p:ajax update="pnlContainer" />
        </p:selectOneRadio>
    
        <h:panelGroup id="pnlContainer" layout="block">
            <h:panelGrid id="pnl1" rendered="#{sorPanelShow.value eq '2'}">
                //More stuff here...
            </h:panelGrid>
    
            <h:panelGrid id="pnl2" rendered="#{sorPanelShow.value eq '1'}">
                //More stuff here...
            </h:panelGrid>
        </h:panelGroup>
    </h:form>
    

    请注意,您必须使用 &lt;h:panelGroup&gt; 包装 &lt;h:panelGrid&gt; 以重新渲染。这是因为每个未渲染的 UIComponent (rendered="false") 都不会成为存储在视图中的树组件的一部分,并且无法通过 ajax 操作进行更新。因此,与其单独渲染每个&lt;h:panelGrid&gt;,不如更新包装器UIComponent。此外,&lt;h:panelGroup layout="block"&gt; 在生成 HTML 时将使用 &lt;div&gt;

    相关信息:

    【讨论】:

    • 嘿,太棒了!但我需要评估不同的,不相等的渲染选项,怎么做?
    • @KazMiller rendered 属性应评估为 false 以不显示组件。因此,只需从托管 bean 中提供一个具有 boolean 值的字段,并将其值设置在 &lt;p:ajax&gt; 事件调用的方法上。
    • 在哪里可以看到我可以在绑定组件中使用的所有表达式?
    • @KazMiller 这将取决于组件中的可用字段。
    • 感谢兄弟 espero tener tu ayuda en el futuro!
    猜你喜欢
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2011-07-25
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    相关资源
    最近更新 更多