将参数传递给javascript函数

时间:2012-05-21 11:39:22

标签: 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提前

1 个答案:

答案 0 :(得分:1)

这对我有用:

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