通过使用 Java Sripting API,我能够在 Java 中执行 JavaScript。但是,有人可以解释一下如何在 Java 中捕获 JS 的返回值吗?在下面的示例中,我可以使用
调用 script2inv.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.
}
}
最佳答案
这就是您将如何获得该返回值。
String returnValue = (String)inv.invokeFunction("hello", "Scripting!!" );
与脚本 2 相同,只需相应地更改调用即可。
The invokeFuntion method from Invocable returns an Object. So, we must type-cast it to the appropriate type before using it.
关于java - 在java中捕获javascript返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19626783/