向 JSF a4j:jsFunction oncomplete 事件发送回调
Posted
技术标签:
【中文标题】向 JSF a4j:jsFunction oncomplete 事件发送回调【英文标题】:Sending a callback to JSF a4j:jsFunction oncomplete event 【发布时间】:2011-09-11 13:35:15 【问题描述】:我正在尝试使我的应用程序中对 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>
我想问一下这是否可以通过使用a4j:jsFunction
的data
属性来实现?像这样的:
...
data="#myBean.callback"
oncomplete="if (typeof window[event.data] == 'function') window[event.data]();"
...
【问题讨论】:
【参考方案1】:试试这样的:
// 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】:试试这个:
<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);
【讨论】:
以上是关于向 JSF a4j:jsFunction oncomplete 事件发送回调的主要内容,如果未能解决你的问题,请参考以下文章
JSF2:从 Spring 向 managedbean 注入服务对象?
向 JSF 2.0 UIInput 组件添加自定义属性 (HTML5) 支持