通过Java代码将参数传递给JavaScript

通过Java代码将参数传递给JavaScript,java,Java,我试图定义一个通用公式,例如“a+b”,并使用它来传递参数。你有什么办法让这东西工作吗 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); String Formula="a+b"; engine.put("Formula", Formula); engine.put("a

我试图定义一个通用公式,例如“a+b”,并使用它来传递参数。你有什么办法让这东西工作吗

    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");
    String Formula="a+b";

    engine.put("Formula", Formula);
    engine.put("a", "3");
    engine.put("b", "4");
    res = engine.eval("r = Formula").toString();
    System.out.println(res);

上述代码的输出为“a+b”,而不是预期的7。

要将变量名与值绑定,请使用绑定

我认为以下代码解决了您的问题:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String formula="a+b";

Bindings bindings = engine.createBindings();
bindings.put("a", 3);
bindings.put("b", 4);

engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE);

Object res = engine.eval(formula);
System.out.println(res.toString());
请看这篇文章: