如何隐藏h:panelGrid

时间:2014-06-02 17:09:03

标签: java jsf primefaces hide

我有两个<p:selectOneRadio>的{​​{1}},我有两个<f:selectItem>。我想根据所选的<h:panelGrid>隐藏其中一个<h:panelGrid>

<f:selectItem>

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

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

请告诉我所需的Bean代码。

只能显示一个 pnl

1 个答案:

答案 0 :(得分:4)

你可以通过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>

请注意,您必须使用<h:panelGroup>来包装<h:panelGrid>以重新渲染。这是因为每个非呈现的UIComponentrendered="false")都不会成为存储在视图中的树组件的一部分,并且无法通过ajax操作进行更新。因此,相反呈现每个<h:panelGrid>,最好更新包装器UIComponent。另外,<h:panelGroup layout="block">在生成HTML时会使用<div>

相关信息: