如何在p中显示null值:SelectOneMenu ONLY当所述值在backingbean中为null时



这是我的selectOneMenu:

<h:form>
    <p:selectOneMenu id="handlerSelect" value="#{caseController.case.handler}" 
        converter="omnifaces.SelectItemsIndexConverter" style="width:182px">
        <f:selectItems value="#{handlerController.findAllHandlers()}"
            var="handlerSelect" itemLabel="#{handlerSelect.name}"
            itemValue="#{handlerSelect}" />
        <p:ajax event="change"listener="#{caseController.changeHandler}" update="handlerSelect"/>
    </p:selectOneMenu>
</h:form>

当用户打开视图时,此selectOneMenu中显示的默认值是用户打开的案例的处理人员的名称。现在,有些情况下数据库中的值为null。在这些情况下,值是处理程序列表中第一个处理程序人员的名称。这显然是错误的,因为显示的值不应该是处理人员的名字,因为有问题的案例没有处理人员,而是案例行的处理人员列中有一个null。

现在,当case对象上的handler属性为null时,我如何显示一些自定义文本,例如"Choose handler"?

要显示一个特殊的"选择处理程序"选项,如果您的值为null,只需添加一个额外的

<f:selectItem
  itemLabel="Choose handler"
  itemValue="#{null}"
/>

到您选择的OneMenu。

若要显示此特殊选项,仅当您的值为null时,您可以添加一个完全相同的第二个selectOneMenu,但没有特殊选项,并为它们提供相反的渲染属性。由此产生的id问题可以通过用例如具有原始id属性的<p:outputPanel />封装selectOneMenus来解决。

<h:form>
  <p:outputPanel id="handlerSelect">
    <p:selectOneMenu
      value="#{caseController.case.handler}" 
      converter="omnifaces.SelectItemsIndexConverter"
      style="width:182px"
      rendered="#{caseController.case.handler eq null}"
    >
      <f:selectItem
        itemLabel="Choose handler"
        itemValue="#{null}"
      />
      <f:selectItems 
        value="#{handlerController.findAllHandlers()}"
        var="handlerSelect"
        itemLabel="#{handlerSelect.name}"
        itemValue="#{handlerSelect}"
      />
      <p:ajax
        event="change"
        listener="#{caseController.changeHandler}"
        update="handlerSelect"
      />
    </p:selectOneMenu>
    <p:selectOneMenu
      value="#{caseController.case.handler}" 
      converter="omnifaces.SelectItemsIndexConverter"
      style="width:182px"
      rendered="#{caseController.case.handler ne null}"
    >
      <f:selectItems 
        value="#{handlerController.findAllHandlers()}"
        var="handlerSelect"
        itemLabel="#{handlerSelect.name}"
        itemValue="#{handlerSelect}"
      />
      <p:ajax
        event="change"
        listener="#{caseController.changeHandler}"
        update="handlerSelect"
      />
    </p:selectOneMenu>
  </p:outputPanel>
</h:form>

相关内容

  • 没有找到相关文章

最新更新