如何在ajax更改事件中提交p:SelectOne菜单值?

如何在ajax更改事件中提交p:SelectOne菜单值?,ajax,jsf,primefaces,selectonemenu,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="#{han

这是我的密码:

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

好的,主要原因最初是组件不在h:form标记内,其次我必须使用omnifaces Converter来修复转换错误。因此,最终工作代码如下所示:

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

该值由ajax请求在
{caseController.case.handler}
中设置。。。那么为什么要把它传下去呢?我相信这可能仍然适用?