2011-06-09 23 views
8

Uygulamamdaki JSF işlevlerini daha dinamik olarak aramaya çalışıyorum. oncomplete olayına geri dönme işlevlerinin el ile statik bir şekilde yazılması yerine, parametresi olarak bir geri arama işlevi göndermek ve işlevinin oncomplete olayının içine girmesini istiyorum. Bunu a4j:jsFunction ait data özelliğini kullanarak mümkün olacağını sormak isteyenJSF a4j için geri arama gönderme: jsFunction oncomplete olayı

<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> 

: İşte bir örnek? Böyle bir şey: böyle

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

cevap

6

deneyin şey:

// 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

bu deneyin:

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

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

ve js

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