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

Nik*_*iko 9 javascript richfaces callback ajax4jsf jsf-2

我试图在我的应用程序中调用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>
Run Code Online (Sandbox Code Playgroud)

我想问一下,使用data属性是否可行a4j:jsFunction?像这样的东西:

...
data="#{myBean.callback}"
oncomplete="if (typeof window[event.data] == 'function') window[event.data]();"
...
Run Code Online (Sandbox Code Playgroud)

小智 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");
Run Code Online (Sandbox Code Playgroud)