XPages:可以从Java调用SSJS函数吗?

时间:2015-03-24 17:58:53

标签: java xpages xpages-ssjs

我想将SSJS中的函数参数(即FunctionObject)传递给bean,然后将该函数作为一种回调函数调用。例如:

companyBox.setGenerator(function() {
    return @DbColumn("", SystemBean.getViewName(), 2);              
});

这样我可以在需要实现值时调用该函数。

我预计这会失败,因为缺少SSJS背景,但这个想法仍然很诱人。或者也许是因为功能无法序列化,但这究竟意味着我还不知道(还)。在这种情况下,companyBox对象是从具有视图/页面范围的托管bean创建的:一旦当前页面消失,我就不再需要它了。

欢迎提供线索......

1 个答案:

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