未在a4j上调用托管bean:jsFunction

时间:2015-09-15 13:47:39

标签: javascript java jsf-2 richfaces

我遇到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

1 个答案:

答案 0 :(得分:0)

请检查a4j:jsFunction是否在form内。

  

组件使用标准JSF机制发送请求。注意   这意味着需要一个JSF表单。

另见http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=jsFunction&skin=classic