我遇到a4j问题:jsFunction(在代码段下面):
<a4j:jsFunction
name="updateVal"
render="panelViewStation"
execute="@all"
onbegin="alert('begin');"
onbeforedomupdate="alert('onbeforedomupdate')"
oncomplete="alert('complete');"
action="#{controller.aMethod}"
actionListener="#{controller.anotherMethod}"
onerror="alert('error');">
<a4j:param name="val" assignTo="#{controller.val}"/>
</a4j:jsFunction>
在我的托管bean中,我有以下方法:
/** action method */
public Object aMethod() {
return "something";
}
/** action listener method */
public void anotherMethod(ActionEvent actionEvent) {
// do something
}
// get/setter for val
此方法由下面的另一个js函数调用:
function processSelectEvent(target) {
alert(target.previousElementSibling.textContent);
updateVal(target.previousElementSibling.textContent);
}
最后这个方法由自动完成元素
调用<rich:autocomplete id="stationId" minChars="3" var="station" inputClass="autoCompleteWidth300" onselectitem="processSelectEvent(event.target);"
fetchValue="#{station.name}"
autocompleteMethod="#{controller.searchStations}"
mode="cachedAjax" required="true" autofill="false" layout="table">
不幸的是,该功能并不像预期的那样。 当我在自动完成列表中选择一个元素时,将调用函数processSelectEvent。 js函数&#34; updateVal&#34;被称为,但只有&#34; onbegin&#34; JavaScript的。 不调用其他属性(onbeforedomupdate,oncomplete,onerror),也不调用托管bean(action,actionListener)。
有什么想法解决我的问题吗? THX
答案 0 :(得分:0)
请检查a4j:jsFunction
是否在form
内。
组件使用标准JSF机制发送请求。注意 这意味着需要一个JSF表单。
另见http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=jsFunction&skin=classic