java - XPage:是否可以从 Java 调用 SSJS 函数?

标签 java xpages xpages-ssjs

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

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

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

我预计这会失败,因为缺少 SSJS 上下文,但这个想法仍然很诱人。或者可能是因为该函数无法序列化,但这到底意味着什么我还不知道。在本例中,companyBox 对象是从具有 View /页面范围的托管 bean 创建的:一旦当前页面消失,我就不再需要它。

欢迎提供线索...

最佳答案

是的。您有两个选择。

1) 使用“值绑定(bind)”。 托马斯·阿德里安评论了this question ,斯文·哈塞尔巴赫 blogged关于调用外部 SSJS 库(顺便说一句,很酷的东西)。

简而言之:调用内部 JSF 引擎来解析值绑定(bind) - 可以是 SSJS(包括对您的方法的调用)或任何其他绑定(bind) (EL)。它适用于“动态”构造表达式,以字符串形式传递。

2) 使用Function对象作为参数。该技术的蓝图已可用 here 。您的评论表明您了解 com.ibm.jscript 包。那么,com.ibm.jscript.std.FunctionObject 类的 call() 方法的当前实现将支持您的经验观察:

/*     */   public FBSObject call(FBSValueVector paramFBSValueVector) {
/* 163 */     return null;
/*     */   }

提示:强烈推荐 JD Eclipse 和 JD Eclipse-realign!

另一种具有更复杂签名的调用方法是可行的方法。用于定义自定义@Functions,例如this snippet .

关于java - XPage:是否可以从 Java 调用 SSJS 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29239720/

相关文章:

java - 如何知道一个日期范围是否与 Java 中的另一个日期范围相交 - Groovy

java - 强制slf4j按顺序打印日志

xpages - WebContent/WEB-INF/lib 中的 JAR 文件是否可用于 Domino Designer 中的 Java 设计元素?

java - 合并两个具有相同键和不同值的 JsonObject

java - 由于 WSDL 导入,无法生成 JAXB Artifact

xpages - 保存在 bean 中后文档中出现重复项目

XPages 移动控件不适用于 iOS 8

twitter-bootstrap - Xpages:ExtLib V12:具有 Bootstrap 配置的应用程序布局。可折叠左立柱

java - 如何在 xpages 中从 Java 传递对文件的引用

javascript - 如何使用 POI 4 Xpages 导出 JavaScript 数组?