2016-07-15 23 views
-1

Hier ist mein Code:Wie p: selectOneMenu Wert auf Ajax Change Event?

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

Als ich den Wert und die Ajax-Ereignis ändern ausgelöst wird und es ruft die changeHandler Methode, die changeHandler Methode wird null als Parameter. Es sollte die ausgewählte Handler-Person sein. Warum ist es null?

UPDATE: hatte ich diese Komponente innerhalb h zu setzen vergessen: Formular-Tags ... aber jetzt, dass ich die hinzugefügt habe, habe ich einen Konvertierungsfehler erhalten: Conversion Error setting value '(Handler:2)' for 'null Converter'.

+1

Der Wert wird in '# {caseController.case.handler}' durch die Ajax-Anfrage gesetzt ... also warum muss man weiterleiten? http://www.primefaces.org/showcase/ui/ajax/dropdown.xhtml – Kukeltje

Antwort

0

Okay, der Hauptgrund war ursprünglich, dass die Komponente war nicht in h: form-Tags und zweitens musste ich Omnifaces-Konverter verwenden, um den Konvertierungsfehler zu beheben. Also sah der Arbeitscode am Ende wie folgt aus:

<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(handlerSelect)}"/> 
     </p:selectOneMenu> 
    </h:form>