在JSF中为selectOneMenu添加“未选择”选项的最佳方法

在JSF中为selectOneMenu添加“未选择”选项的最佳方法

我想知道什么是允许用户在selectOneMenu中选择任何内容的最佳或最简单的方法。

我的例子:我有一个注册用户列表,管理员应该能够按一些标准过滤显示的用户列表。这些标准,如usertype(employee,customer,...)可以由selectOneMenus选择,如下所示:

<h:selectOneMenu value="#{myBean.selectedUsertype}" converter="#{usertypeConverter}"><f:selectItems value={myBean.usertypes}" /></h:selectOneMenu>

当相应的selectOneMenu由使用转换器的POJO列表支持时,如何将项添加到列表中,表明用户没有选择任何特定项?目前我有一个虚拟的usertype对象显示标签“---”,但这在我的应用程序的其他方面引起了几个问题,我不认为这是最好的解决方案。


蝴蝶刀刀
浏览 820回答 3
3回答

12345678_0001

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

紫衣仙女

添加一个带有null值的selectItem&nbsp;;<h:selectOneMenu&nbsp;value="#{bean.question}"&nbsp;required="true"&nbsp;requiredMessage="Please&nbsp;select&nbsp;a&nbsp;question"> &nbsp;&nbsp;&nbsp;&nbsp;<f:selectItem&nbsp;itemValue="#{null}"&nbsp;itemLabel="Select"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;<f:selectItems&nbsp;value="#{bean.questions}"&nbsp;/></h:selectOneMenu>

POPMUISE

我们可以在primefaces(当我们必须使用<p:selectOneMenu...从某些原因,如使用<p:ajax..)添加以下空项:<f:selectItem&nbsp;itemValue="#{null}"&nbsp;itemLabel="--select--"&nbsp;&nbsp;itemDisabled="#{Mybean.value&nbsp;ne&nbsp;null}"&nbsp;/>注意:在这种情况下,我们不需要以下两个标记:hideNoSelectionOption="true"和noSelectionOption="true"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
JavaScript