selectOneMenu中的hideNoSelectionOption未按预期工作

时间:2014-10-08 13:37:48

标签: jsf primefaces selectonemenu

我有以下selectOneMenu,在我的组件中我想要一个不应该显示的项目,例如如果#{Mybean.value} 的值与#{Mybean.ListValues} 中的值匹配,我不希望在我的网站中有空选项组合框。

  <p:selectOneMenu value="#{Mybean.value}"  hideNoSelectionOption="true"     
   required="true" requiredMessage="Required data">

      <f:selectItem itemLabel="" itemValue="#{null}" noSelectionOption="true" />
      <f:selectItems value="#{Mybean.ListValues}" var="option"  itemLabel="#{option.optionName}"   
      itemValue="#{option.optionId}"/>
 </p:selectOneMenu>

我搜索过,但我找不到任何有用的内容,primefaces forum中只有一个链接描述了这个问题。

我的主要版本是 3.5

3 个答案:

答案 0 :(得分:3)

该属性doesn't exist in the official apidoc。你是从哪里得到的?


您实际需要的是f:selectItems组件上的itemDisabled attribute。正是这个属性禁止选择selectItem。历史上,primefaces has had problems with that attribute

理想情况下,您应该

   <p:selectOneMenu value="#{Mybean.value}" required="true" requiredMessage="Required data">
       <f:selectItem itemLabel="" itemValue="#{null}" noSelectionOption="true" />
       <f:selectItems itemDisabled="#{Mybean.value=='aValue'}" value="#{Mybean.ListValues}" var="option" itemLabel="#{option.optionName}"      itemValue="#{option.optionId}"/>
  </p:selectOneMenu>

答案 1 :(得分:2)

答案 2 :(得分:0)

所以,基本上基于@kolossus的回答,我们可以在primefaces(当你使用<p:selectOneMenu时......)的情况下添加以下空项

<f:selectItem itemValue="#{null}" itemLabel="--select--"  itemDisabled="#{Mybean.value ne null}" />

我们可以在primefaces(当我们必须使用

注意:在这种情况下,我们不需要以下两个标签:

hideNoSelectionOption="true"

noSelectionOption="true"