【发布时间】:2013-10-28 02:06:13
【问题描述】:
我正在尝试让我的所有 Java 方法都可以从 javascript 脚本中访问。
因为我想要“捷径”,所以我遵循以下指南:https://stackoverflow.com/a/19197130/2897090。但是当我的 Java 方法具有可变参数时,我无法“公开”该方法以用于 javascript 语言。
public void printf(String format, Object... args) {
out.printf(format, args);
}
//Gives org.mozilla.javascript.EvaluatorException: Unsupported parameter type "[Ljava.lang.Object;" in method printf
其他:
如果我尝试使用“javascript”创建“printf 的快捷方式”:
function printf(format){
java.lang.System.out.printf(format, arguments);
}
如果我输入任何内容,我会得到org.mozilla.javascript.Arguments@NNNNNN。如何解决?
谢谢。
更新
由于我没有找到任何解决方案,我改变了方法:现在我只使用 ScriptEngine。实际上我正在做的是暴露整个对象(不仅仅是函数)。不幸的是,每次我需要调用一个函数时,我都需要在它前面加上我公开的对象的名称。
无论如何,我可以使用可变参数创建我的 Java 方法,并且无需在 JavaScript 端进行任何修改即可使用它们。
【问题讨论】: