我有两个<p:selectOneRadio>
的{{1}},我有两个<f:selectItem>
。我想根据所选的<h:panelGrid>
隐藏其中一个<h:panelGrid>
。
<f:selectItem>
在此示例中,如果在收音机中选择 1 选项,我如何隐藏 pnl1 ?
如果在收音机中选择 2 选项,我如何隐藏 pnl2 ?
请告诉我所需的Bean代码。
只能显示一个 pnl
答案 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>
以重新渲染。这是因为每个非呈现的UIComponent
(rendered="false"
)都不会成为存储在视图中的树组件的一部分,并且无法通过ajax操作进行更新。因此,相反呈现每个<h:panelGrid>
,最好更新包装器UIComponent
。另外,<h:panelGroup layout="block">
在生成HTML时会使用<div>
。
相关信息: