向JSF中的selectOneMenu添加“nothing selected”选项的最佳方法
我想知道什么是允许用户在selectOneMenu中不select任何东西的最好或最简单的方法。
我的例子:我有一个注册用户的列表,pipe理员应该能够过滤一些标准的显示用户列表。 这些标准,如usertype(employee,customer,…)可以通过selectOneMenus来select,如下所示:
<h:selectOneMenu value="#{myBean.selectedUsertype}" converter="#{usertypeConverter}"> <f:selectItems value={myBean.usertypes}" /> </h:selectOneMenu>
当使用转换器将相应的selectOneMenu作为POJO列表的后备时,如何将一个项目添加到列表中以指示用户没有select任何特定的项目? 目前我有一个虚拟usertype对象显示标签“—”,但这在我的应用程序的其他领域造成了一些问题,我不认为这是最好的解决scheme。
只需明确地将select项目值设置为null
。
<h:selectOneMenu value="#{bean.selectedItem}"> <f:selectItem itemValue="#{null}" itemLabel="--select--" /> <f:selectItems value="#{bean.availableItems}" /> </h:selectOneMenu>
不,像itemValue=""
这样的空string是不够的。 它真的必须是null
。 否则,您将遇到本问答中所述的问题: 使用“Please select”f:selectItem,其中包含空值/空值,在ap:selectOneMenu中 。
如果项目碰巧是required="true"
并且您使用的是JSF 2.x,那么您可以将noSelectionOption="true"
添加到select项目中。 如果您还在select组件上设置了hideNoSelectionOption="true"
,则一旦enduserselect了不同的项目,它将隐藏列表中的空白选项,因此无法重新select空白选项。
<h:selectOneMenu value="#{bean.selectedItem}" hideNoSelectionOption="true"> <f:selectItem itemValue="#{null}" itemLabel="--select--" noSelectionOption="true" /> <f:selectItems value="#{bean.availableItems}" /> </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>
我们可以在primefaces(当我们必须使用<p:selectOneMenu
…从某种原因如使用<p:ajax
..)添加以下空项目:
<f:selectItem itemValue="#{null}" itemLabel="--select--" itemDisabled="#{Mybean.value ne null}" />
注意:在这种情况下,我们不需要以下两个标签:
hideNoSelectionOption="true"
和
noSelectionOption="true"
- 了解PrimeFaces进程/更新和JSF f:ajax执行/渲染属性
- 在<ui:repeat>中指定元素的条件渲染? <c:if>似乎不起作用
- 如何将JSF图片资源引用为CSS背景图片url
- 在页面加载时调用JSF托pipebean操作
- 为什么Facelets比JSF2.0更适合作为视图定义语言呢?
- 什么是JSF资源库,以及如何使用它?
- PrimeFaces 4.0 / JSF 2.2.x中的AJAX无法使用file upload – javax.servlet.ServletException:请求内容types不是多部分/表单数据
- 默认情况下,JSF生成不可用的ID,这与Web标准的CSS部分不兼容
- 我可以将哪些值传递给f:ajax标记的事件属性?