2016-07-15 6 views
-1

Вот мой код:Как отправить p: selectOneMenu значение при событии изменения ajax?

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

Как изменить значение и Аякс событие срабатывает и вызывает метод changeHandler, метод changeHandler получает нуль в качестве параметра. Он должен быть выбран человеком-обработчиком. Почему это null?

UPDATE: я забыл поставить этот компонент в течение часов: форма теги ... но теперь, когда я получил те добавили, я получаю ошибку преобразования: Conversion Error setting value '(Handler:2)' for 'null Converter'.

+1

Значение устанавливается в '# {caseController.case.handler}' по запросу Аякса ... так почему нужно пройти его? http://www.primefaces.org/showcase/ui/ajax/dropdown.xhtml – Kukeltje

ответ

0

Хорошо главная причина была первоначальна, что компонент не был внутри h: form-tags, а во-вторых, мне пришлось использовать конвертер omnifaces, чтобы исправить ошибку преобразования. Таким образом, в конце концов, рабочий код выглядит следующим образом:

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