如何在 ajax 更改事件上提交 p:selectOneMenu 值?
How to submit p:selectOneMenu value on 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>
当我更改值并触发 ajax 事件并调用 changeHandler
方法时,changeHandler
方法获取 null 作为参数。它应该是选定的处理人员。为什么为空?
更新: 我忘记将该组件放在 h:form 标签内...但现在我添加了这些组件,但出现转换错误:Conversion Error setting value '(Handler:2)' for 'null Converter'.
好吧,主要原因最初是组件不在 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>
这是我的代码:
<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-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>