【问题标题】:Return boolean value after a javaScript code is evaluated using javax.script.ScriptEngine object使用 javax.script.ScriptEngine 对象评估 JavaScript 代码后返回布尔值
【发布时间】:2012-03-14 02:40:22
【问题描述】:

我正在使用 javax.script.* 包来评估 Java 文件中的 javascript。我正在使用 ScriptEngine 对象来评估一些 javaScript 代码。 javaScript 代码返回一个布尔值。我不确定如何捕获 Java 文件中的布尔值。例如,请参阅:

import javax.script.*;
public class Test {
    public static void main(String[] args) throws Exception {
        ScriptEngineManager factory = new ScriptEngineManager();
        ScriptEngine engine = factory.getEngineByName("JavaScript");
        String filepath = "../test.js";
        engine.eval(new java.io.FileReader(filepath));
    }
}

test.js

function test(value) {
    if(value==1) {
       println("True");
       return true;
    } else {
       println("False");
       return false;
    }
}

var i=1;
test (i);

我尝试了以下方法:

Boolean result = (Boolean) engine.eval(new java.io.FileReader(filepath));

以上行抛出 java.lang.NullPointerException 错误。

谢谢, 索尼

【问题讨论】:

  • printlns 中的任何一个都工作了吗?
  • 是的,println 语句工作正常。我在 test.js 中编辑了代码。

标签: java javascript javax.script


【解决方案1】:

在 JS 中:

var result=test (i);

在 Java 中

engine.eval....
engine.get("result");

【讨论】:

    猜你喜欢
    • 2011-07-31
    • 2016-05-03
    • 2015-01-02
    • 2018-08-17
    • 1970-01-01
    • 2010-11-30
    • 2016-12-23
    • 2013-03-25
    • 2017-08-18
    相关资源
    最近更新 更多