java - 在java中捕获javascript返回值

标签 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.      
 }
}

最佳答案

这就是您将如何获得该返回值。

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.

Reference

关于java - 在java中捕获javascript返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19626783/

相关文章:

Java:继续标签

java - Android中如何获取方法名称?

java - Java 第四解释器

javascript - 使用 Onsubmit 从表单调用 Javascript

java - 处理巨大的管道分隔文件

java - 如何获取另一个fragment中EditText中TimePickerDialog的时间?

javascript - JS中字符串转换unicode?

javascript - 如何在本地正确链接 Jquery/Bootstrap 和脚本?

javascript - 在 jQuery 中获取滚轮数量

javascript - 使用 Browserify 污染全局范围