は属性をサポートして<f:selectItem>
いません。rendered
最も近い賭けはitemDisabled
、アイテムを表示しているが選択できない属性です。これはでサポートされてい<f:selectItems>
ます。
場合によっては<p:selectOneMenu>
、CSSを追加するだけで、無効になっているアイテムを非表示にできます。
<p:selectOneMenu ... panelStyleClass="hideDisabled">
<f:selectItem itemValue="1" itemLabel="one" />
<f:selectItem itemValue="2" itemLabel="two" itemDisabled="#{some.condition}" />
<f:selectItem itemValue="3" itemLabel="three" />
</p:selectOneMenu>
.ui-selectonemenu-panel.hideDisabled .ui-selectonemenu-item.ui-state-disabled {
display: none;
}
<h:selectOneMenu>
WebブラウザがCSSを介して無効なオプションを非表示にすることをサポートしているかどうかに依存している場合は、次のようにします。
<h:selectOneMenu ... styleClass="hideDisabled">
<f:selectItem itemValue="1" itemLabel="one" />
<f:selectItem itemValue="2" itemLabel="two" itemDisabled="#{some.condition}" />
<f:selectItem itemValue="3" itemLabel="three" />
</h:selectOneMenu>
select.hideDisabled option[disabled] {
display: none;
}
サーバー側の代替手段は<c:if>
、個人の周りにJSTL<f:selectItem>
を取り込み、次のようにビューに継続的に追加することです(JSFでJSTLがどのように機能するかを知っていることを確認してください:JSF2FaceletsのJSTL...は理にかなっていますか?):
<f:selectItem itemValue="1" itemLabel="one" />
<c:if test="#{not some.condition}">
<f:selectItem itemValue="2" itemLabel="two" />
</c:if>
<f:selectItem itemValue="3" itemLabel="three" />
List<SelectItem>
または、計算された条件に基づいてバッキングBeanに動的にaを設定し、それをでバインドすることもでき<f:selectItems>
ます。