java - 将参数传递给 JavaScript 函数

标签 java rhino

所以事情是这样的:我读到 this article 并开始尝试使用Rhino。到目前为止,我已经了解了如何调用函数以及如何获取其返回值。我不能做的是传递函数的参数。这是我的代码:

ScriptEngineManager engineMgr = new ScriptEngineManager();
ScriptEngine engine = engineMgr.getEngineByName("ECMAScript");

String js = "";
js += "function add(a, b) {";
js += " var sum = parseFloat(a) + parseFloat(b);";
js += " println(sum);";
js += "}";

engine.put("a", 3);
engine.put("b", 5);

Object returnn = null;
try {
    engine.eval(js);

    Invocable invocableEngine = (Invocable) engine;
    returnn = invocableEngine.invokeFunction("add");
} catch (ScriptException e) {
    System.out.println("Script error.");
} catch (NoSuchMethodException e) {
    System.out.println("Method error.");
}

System.out.println(returnn);

我没有收到任何异常,但返回结果为 NaN。我尝试打印 a 和 b (参数),但它们总是为空。如果这不是调用函数的最佳方式,请向我指出一些有用的线程。 (我自己没有找到)

提前TYVM

最佳答案

这对我有用:

Object params[] = {1,2,3};
Invocable invocable = (Invocable) script.getEngine();
invocable.invokeFunction("myFunction", params);

关于java - 将参数传递给 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10684536/

相关文章:

java - Vaadin - 适合组件的布局尺寸

Java 对集合的操作

javascript - 使用 Rhino 和 JSR-223 读取 JSON 文件

java - Rhino 和 Java 通过 JSR223 进行互操作 : working with Javascript Object instances

java - 如何读取具有透明度的 java BufferedImage 中的像素颜色

java - JTextPane 语法高亮 - 限制我的格式?

java - Vaadin 表对象返回 null,尽管它存在 - 修改 toString()?

javascript - 如何在 Rhino 脚本中实例化 java 泛型类?

java - 如何在java rhino lib脚本中不导入系统lib类?

java - 验证 JavaScript 代码