在JSF中为selectOneMenu添加“未选择”选项的最佳方法我想知道什么是允许用户在selectOneMenu中选择任何内容的最佳或最简单的方法。我的例子:我有一个注册用户列表,管理员应该能够按一些标准过滤显示的用户列表。这些标准,如usertype(employee,customer,...)可以由selectOneMenus选择,如下所示:<h:selectOneMenu value="#{myBean.selectedUsertype}" converter="#{usertypeConverter}"><f:selectItems value={myBean.usertypes}" /></h:selectOneMenu>当相应的selectOneMenu由使用转换器的POJO列表支持时,如何将项添加到列表中,表明用户没有选择任何特定项?目前我有一个虚拟的usertype对象显示标签“---”,但这在我的应用程序的其他方面引起了几个问题,我不认为这是最好的解决方案。
3 回答

12345678_0001
TA贡献1802条经验 获得超5个赞
只需将选择项值显式设置为null
。
<h:selectOneMenu value="#{bean.selectedItem}"> <f:selectItem itemValue="#{null}" itemLabel="--select--" /> <f:selectItems value="#{bean.availableItems}" /></h:selectOneMenu>
不,像一个空字符串itemValue=""
是不够的。它真的必须null
。否则你会遇到问题,如本问答所述:使用“请选择”f:selectItem在ap:selectOneMenu中使用null / empty值。
如果该项目恰好是required="true"
您正在使用JSF 2.x,那么您可以添加noSelectionOption="true"
到选择项目。如果您还设置hideNoSelectionOption="true"
了选择组件,则一旦最终用户选择其他项目,它将隐藏列表中的空选项,从而无法重新选择空选项。
<h:selectOneMenu value="#{bean.selectedItem}" hideNoSelectionOption="true"> <f:selectItem itemValue="#{null}" itemLabel="--select--" noSelectionOption="true" /> <f:selectItems value="#{bean.availableItems}" /></h:selectOneMenu>

紫衣仙女
TA贡献1839条经验 获得超15个赞
添加一个带有null值的selectItem ;
<h:selectOneMenu value="#{bean.question}" required="true" requiredMessage="Please select a question"> <f:selectItem itemValue="#{null}" itemLabel="Select" /> <f:selectItems value="#{bean.questions}" /></h:selectOneMenu>

POPMUISE
TA贡献1765条经验 获得超5个赞
我们可以在primefaces(当我们必须使用<p:selectOneMenu
...从某些原因,如使用<p:ajax
..)添加以下空项:
<f:selectItem itemValue="#{null}" itemLabel="--select--" itemDisabled="#{Mybean.value ne null}" />
注意:在这种情况下,我们不需要以下两个标记:
hideNoSelectionOption="true"
和
noSelectionOption="true"
添加回答
举报
0/150
提交
取消