添加“的最佳方式”;“未选择任何内容”;JSF中selectOneMenu的选项
我想知道让用户在SelectOne菜单中不选择任何内容的最佳或最简单的方法是什么 我的示例:我有一个注册用户列表,管理员应该能够根据一些标准筛选显示的用户列表。这些标准,如用户类型(员工、客户等)可以通过SelectOneMenu进行选择,如下所示:添加“的最佳方式”;“未选择任何内容”;JSF中selectOneMenu的选项,jsf,selectonemenu,Jsf,Selectonemenu,我想知道让用户在SelectOne菜单中不选择任何内容的最佳或最简单的方法是什么 我的示例:我有一个注册用户列表,管理员应该能够根据一些标准筛选显示的用户列表。这些标准,如用户类型(员工、客户等)可以通过SelectOneMenu进行选择,如下所示: <h:selectOneMenu value="#{myBean.selectedUsertype}" converter="#{usertypeConverter}"> <f:selectItems value={myBean.
<h:selectOneMenu value="#{myBean.selectedUsertype}" converter="#{usertypeConverter}">
<f:selectItems value={myBean.usertypes}" />
</h:selectOneMenu>
添加一个带有空值的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>
只需将select item值显式设置为null
不,像itemValue=“
这样的空字符串是不够的。它必须是null
。否则,您将遇到本问答中所述的麻烦:
如果项目恰好是required=“true”
并且您使用的是JSF2.x,那么您可以向所选项目添加noSelectionOption=“true”
。仅当您还在选择组件上设置了hideNoSelectionOption=“true”
时,此选项才有用。一旦最终用户选择了不同的项目,它将在列表中隐藏空选项,从而无法重新选择空选项
我们可以使用primefaces(当我们必须使用时,如果值为null,则应抛出NullPointerException。@bruno,该文档是针对JSF 1.1的,10年前发布的。请更新您的书签。@BalusC,它不适用于转换器-它抛出NullPointerException(JSF 2.2)@guest:这只是所讨论的转换器中的一个bug。如果您不知道如何解决这个问题,或者找不到回答如何创建正确转换器的问题,请按“提问”按钮。@BalusC,itemValue=“{null}”或itemValue=“null”当项目列表的类型为object时工作正常。如果项目列表的值的类型为int呢?它会在验证时对所选值抛出java.lang.IllegalArgumentException。您可以使用此解决方案@user2918640@Kukeltje:选择其他值后,“选择”标签将保留在菜单上。但在我的解决方案中,“选择”选择任何其他选项后,标签将被禁用…此帖子不会向已给出的答案添加任何新内容。如果您同意某个答案,只需向上投票,而不是重复。堆栈溢出不像是一个老式的讨论论坛,每个人都会相互重复,陷入无法想象的混乱。@BalusC:hideNoSelectionOption=“true”和noSelectOption=“true”属性在您使用
<f:selectItem itemValue="#{null}" itemLabel="--select--" itemDisabled="#{Mybean.value ne null}" />
hideNoSelectionOption="true"
noSelectionOption="true"