Отправка обратного вызова в событие JSF a4j: jsFunction oncomplete - PullRequest
9 голосов
/ 09 июня 2011

Я пытаюсь сделать вызов функций 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 a4j:jsFunction?Примерно так:

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

Ответы [ 2 ]

6 голосов
/ 26 октября 2011

Попробуйте что-то вроде этого:

// 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");
2 голосов
/ 02 марта 2012

Попробуйте:

<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); 
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...