2016-07-18 7 views
0

Hier ist meine selectOneMenu:Wie zeige ich Null-Wert in p: SelectOneMenu NUR, wenn der Wert in der Backing-Bean Null ist?

<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> 

Der Standardwert in diesem selectOneMenu als Benutzer zeigt öffnet den Blick, ist der Name des Handlers Person des Falls der Benutzer öffnet sich. Nun haben einige Fälle null als Wert in der Datenbank. In diesen Fällen ist der Wert der Name der ersten Handlerperson in der Handlerliste. Dies ist offensichtlich falsch, da der angezeigte Wert nicht der Name einer Handlerperson sein sollte, da der fragliche Fall keine Handlerperson, sondern eine Null in der Handlerspalte der Fallzeile aufweist.

Nun, wie kann ich einige benutzerdefinierte Text z. "Choose handler" WANN ist die Handler-Eigenschaft null für das case-Objekt?

+0

Duplizieren von http://stackoverflow.com/q/11360030 – BalusC

Antwort

1

Um eine spezielle "Wählen Sie Handler" Option zu zeigen, wenn Ihr Wert null ist, nur ein zusätzlich

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

zu Ihrem selectOneMenu hinzuzufügen.

Um diese spezielle Option anzuzeigen, nur wenn Ihr Wert ist null, können Sie eine fast identische zweite selectOneMenu aber ohne die spezielle Option hinzufügen und ihnen beide gegenüber Render-Attribute geben. Das resultierende ID-Problem kann gelöst werden, indem das selectOneMenus mit z.B. <p:outputPanel /> mit dem ursprünglichen ID-Attribut.

<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> 
+0

, dass fast da sein würde, aber die Null-Option sollte nicht, wenn der Wert Handler-Eigenschaft ist nicht null gemacht werden. –

+1

Aktualisierte Antwort, um Ihren Kommentar zu berücksichtigen. – irieill

Verwandte Themen