我想将SSJS中的函数参数(即FunctionObject)传递给bean,然后将该函数作为一种回调函数调用。例如:
companyBox.setGenerator(function() {
return @DbColumn("", SystemBean.getViewName(), 2);
});
这样我可以在需要实现值时调用该函数。
我预计这会失败,因为缺少SSJS背景,但这个想法仍然很诱人。或者也许是因为功能无法序列化,但这究竟意味着我还不知道(还)。在这种情况下,companyBox对象是从具有视图/页面范围的托管bean创建的:一旦当前页面消失,我就不再需要它了。
欢迎提供线索......
答案 0 :(得分:1)
是的。你有两个选择。
1)使用“值绑定”。 Thomas Adrian评论this question,Sven Hasselbach blogged关于调用外部SSJS库(顺便提一下很酷的东西)。
简而言之:调用内部JSF引擎来解析值绑定 - 可以是SSJS(包括调用你的方法)或任何其他绑定(EL)。它与“on fly”构造的表达式一起使用,以String形式传递。
2)使用Function对象作为参数。该技术的蓝图可用here。您的评论显示您了解com.ibm.jscript
包。那么,call()
类的com.ibm.jscript.std.FunctionObject
方法的当前实现将支持您的经验观察:
/* */ public FBSObject call(FBSValueVector paramFBSValueVector) {
/* 163 */ return null;
/* */ }
提示:强烈建议使用JD Eclipse和JD Eclipse -ignign!
具有更复杂签名的另一种调用方法是可行的方法。它用于定义自定义@Functions,例如this snippet。