Raj*_*pta 38 jsf rendered-attribute
如何为<f:selectItem>
标记指定条件呈现.我需要<f:selectItem>
根据特定用户的状态显示选项.
例如,我想要的东西如下:
<f:selectItem itemLabel="Yes! I need a girlfriend!"
rendered="false(or some boolean condition)"
itemValue="o1"/>
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 64
在<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>
Run Code Online (Sandbox Code Playgroud)
.ui-selectonemenu-panel.hideDisabled .ui-selectonemenu-item.ui-state-disabled {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
如果<h:selectOneMenu>
您更依赖于webbrowser是否支持通过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>
Run Code Online (Sandbox Code Playgroud)
select.hideDisabled option[disabled] {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
服务器端的替代方案是<c:if>
在个体周围引入JSTL ,<f:selectItem>
以便按顺序将其添加到视图中(确保您了解JSTL在JSF中的工作方式:JSF2 Facelets中的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" />
Run Code Online (Sandbox Code Playgroud)
或者,您可以List<SelectItem>
根据计算的条件简单地动态填充辅助bean中的a 并将其绑定<f:selectItems>
.
我使用的解决方法是设置itemDisabled属性并使用此CSS:
select option[disabled] { display: none; }
Run Code Online (Sandbox Code Playgroud)
但它需要在JSF中正确修复.
归档时间: |
|
查看次数: |
31225 次 |
最近记录: |