捕获java中的javascript返回值

时间:2013-10-28 03:30:08

标签: java javascript

通过使用Java Sripting API,我可以在Java中执行JavaScript。但是,有人可以解释如何从Java中获取JS的返回值吗?在下面的示例中,我可以使用

调用script2
inv.invokeFunction("getValue", "Number", "2);

如何从script2获取返回值?

import javax.script.*;

public class InvokeScriptFunction {
public static void main(String[] args) throws Exception {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");

    // JavaScript code in a String
    String script1 = "function hello(name) {print ('Hello, ' + name);}";
    String script2 = "function getValue(a,b) { if (a==="Number") return 1; 
                     else return b;}";
    // evaluate script
    engine.eval(script1);
    engine.eval(script2);

    Invocable inv = (Invocable) engine;

    inv.invokeFunction("hello", "Scripting!!" );  //This one works.      
 }
}

1 个答案:

答案 0 :(得分:4)

这是你获得该返回值的方式。

String returnValue = (String)inv.invokeFunction("hello", "Scripting!!" );

对于脚本2,只需相应地更改呼叫。

  

Invocable的invokeFuntion方法返回一个Object。因此,我们必须在使用它之前将其类型化为适当的类型。

Reference