如何使用Rhino将对象从Java传递给JavaScript

时间:2012-02-29 05:49:14

标签: java javascript scripting rhino

我正在开发一个Java程序,其中一个对象需要具有一个函数的用户自定义行为。我正在使用Mozilla Rhino,JavaScript和Java实现这一点。

我无法弄清楚如何获取已经实例化的对象并将其传递给预先编写的脚本。

我已经浏览过很多关于Rhino的教程,没有人给出这样的例子。任何建议或链接将不胜感激。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

This answer另一个问题将一个对象data从Java传递给Rhino Javascript。

我不知道它是否有效(我想它确实如此)。以下是相关部分:

public static class data { 
   Double value = 1.0d;
}

ScriptEngine engine = new ScriptEngineManager().getEngineByName ("rhino"); 
data data = new data();
Context.enter().getWrapFactory().setJavaPrimitiveWrap(false);

engine.eval("function test(data) { return data.get('value1') + 5;};"); 
System.out.println("Result:" + ((Invocable)engine).invokeFunction("test", data)); 

(我不知道setJavaPrimitiveWrap()here is some WrapFactory Javadoc。)