如何在ajax更改事件上提交p:selectOneMenu值?

时间:2016-07-15 12:35:27

标签: ajax jsf primefaces selectonemenu

这是我的代码:

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

当我更改值并触发ajax事件并调用changeHandler方法时,changeHandler方法将作为参数获取null。它应该是选定的处理程序人员。为什么它是空的?

更新:我忘记将该组件放在h:form标签中......但是现在我添加了这些组件,我收到转换错误:Conversion Error setting value '(Handler:2)' for 'null Converter'.

1 个答案:

答案 0 :(得分: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>