向JSF a4j发送回调:jsFunction oncomplete事件

时间:2011-06-09 09:46:22

标签: javascript callback jsf-2 richfaces ajax4jsf

我试图在我的应用程序中调用JSF函数更具动态性。我不希望手动将回调函数写入oncomplete事件的静态方法,而是希望将回调函数作为参数发送,并在函数oncomplete事件内调用它。这是一个例子:

<script type="text/javascript">
  myFunc('myParamValue', function(){
    doThis();
    andDoThis();
  });
</script>

<a4j:jsFunction name="myFunc" actionListener="#{...}" data="" oncomplete="">
  <f:param name="myParam" />
  <f:param name="callback" />
</a4j:jsFunction>

我想问一下使用data的{​​{1}}属性是否可行?像这样:

a4j:jsFunction

2 个答案:

答案 0 :(得分:6)

尝试这样的事情:

// Page

<a4j:jsFunction name="callScript" data="#{bean.someProperty1}" 
        reRender="someComponent" 
        oncomplete="execute(data.callback)">

      <a4j:actionparam name="something" assignTo="#{bean.something}"/>
      <a4j:actionparam name="callback" assignTo="#{bean.callback}"/>

</a4j:jsFunction>

// JS

function testFunction() {
    alert("It works!");
}

function execute(funcName) {
    //is no namespace use window
    window[funcName]();
}

//call
callScript("param1", "testFunction");

答案 1 :(得分:2)

试试这个:

<a4j:jsFunction name="callScript" data=".." 
    reRender="someComponent" 
    oncomplete="foo(data,request)">

  <a4j:actionparam name="something" assignTo="#{bean.something}"/>
  <a4j:actionparam name="callback" />

和js

function foo(data,request) {
 var callback =request.options.parameters.callback ;
 callback(data); 
 }