Jsf 如何使用<;a4j:ajax>;与<;f:选择项目>;
我想编写ajax函数,并将选择下拉菜单中的选定值传递给bean。 这就是我所拥有的:Jsf 如何使用<;a4j:ajax>;与<;f:选择项目>;,jsf,richfaces,ajax4jsf,Jsf,Richfaces,Ajax4jsf,我想编写ajax函数,并将选择下拉菜单中的选定值传递给bean。 这就是我所拥有的: <rich:select id="ctpMeasurementUnits" value="#{associationBean.selectedMruId}" defaultLabel="#{msg['classifier.select']}" requiredMessage="#{msg['classifier.measurementUnitRequire']}" vali
<rich:select id="ctpMeasurementUnits"
value="#{associationBean.selectedMruId}"
defaultLabel="#{msg['classifier.select']}"
requiredMessage="#{msg['classifier.measurementUnitRequire']}"
validatorMessage="#{msg['common.selectIllegalValue']}">
<f:selectItems
value="#{measurementUnitsListBean.allMeasurementUnits}"
var="mru" itemLabel="#{mru.mruName}" itemValue="#{mru.mruId}">
<a4j:ajax event="change" execute="@this" listener="#{associationBean.onSelectChangeMru(mru)}" />
</f:selectItems>
<f:validateRequired />
<rich:validator />
</rich:select>
但是,通过使用这段代码,我得到了一个错误:
<a4j:ajax> Unable to attach <a4j:ajax> to non-ClientBehaviorHolder parent
无法附加到非ClientBehaviorHolder父级
问题:如何从
f:selectItems
下拉菜单中使用ajax功能?您必须将a4j:ajax附加到rich:select not f:selectItems
<rich:select id="ctpMeasurementUnits"
value="#{associationBean.selectedMruId}"
defaultLabel="#{msg['classifier.select']}"
requiredMessage="#{msg['classifier.measurementUnitRequire']}"
validatorMessage="#{msg['common.selectIllegalValue']}">
<f:selectItems
value="#{measurementUnitsListBean.allMeasurementUnits}"
var="mru" itemLabel="#{mru.mruName}" itemValue="#{mru.mruId}">
</f:selectItems>
<f:validateRequired />
<a4j:ajax event="change" execute="@this" listener="#{associationBean.onSelectChangeMru(mru)}" />
<rich:validator />
</rich:select>
您必须将a4j:ajax附加到rich:select而不是f:selectItems
<rich:select id="ctpMeasurementUnits"
value="#{associationBean.selectedMruId}"
defaultLabel="#{msg['classifier.select']}"
requiredMessage="#{msg['classifier.measurementUnitRequire']}"
validatorMessage="#{msg['common.selectIllegalValue']}">
<f:selectItems
value="#{measurementUnitsListBean.allMeasurementUnits}"
var="mru" itemLabel="#{mru.mruName}" itemValue="#{mru.mruId}">
</f:selectItems>
<f:validateRequired />
<a4j:ajax event="change" execute="@this" listener="#{associationBean.onSelectChangeMru(mru)}" />
<rich:validator />
</rich:select>
将其更改为
<f:ajax>
如果你想使用
<a4j:ajax> declare an <a4j:region> and write it down within it.
声明并在其中写下。
将其更改为
<f:ajax>
如果你想使用
<a4j:ajax> declare an <a4j:region> and write it down within it.
声明并在其中写下。
问题代码片段中使用的标记和属性名称表明,OP使用的是RichFaces 4.x,而不是您的答案所预期的3.x。即使他使用的是RichFaces 4,并且希望迁移到f:ajax
,这也没有说明,这也无法解决问题。事实上,即使放置正确,它也可能根本不起作用。问题代码片段中使用的标记和属性名称表明,OP使用的是RichFaces 4.x,因此不是您的答案所期望的3.x。即使他使用的是RichFaces 4,并希望迁移到f:ajax
,但也没有说明,这并不能解决问题。事实上,即使放置正确,它也可能根本不起作用。如果我将a4j:ajax附加到rich:select,那么它就不起作用(永远不会调用onSelectChangeMru方法),那么就有一个完全不同的问题导致@WheelPot。目前,这个答案直接解决了您报告的问题。很多事情都可能导致ajax操作无法启动。查看javascript控制台并在此处发布侦听器方法,@WheelPot不是应该阻止执行的方法,而是删除参数的方法,当侦听器执行bean中的值时,该方法将已经更改。如果我将a4j:ajax附加到rich:select,那么它就不起作用(永远不会调用onSelectChangeMru方法),那么就有一个完全不同的问题导致@WheelPot。目前,这个答案直接解决了您报告的问题。很多事情都可能导致ajax操作无法启动。查看javascript控制台并在此处发布侦听器方法,@WheelPot不是应该阻止执行的方法,而是删除参数的方法,当侦听器执行bean中的值时,该方法将已经更改。(参数仍然为空)。