Phi*_*ipp 5 javascript java scripting rhino
我正在使用Rhino在Java应用程序中嵌入一些javascript.我正在关注Rhino网站上的示例,通过调用Context的evaluateString方法执行脚本并将实际脚本作为String传递.
我有一大堆现有的javascript代码,我想利用它.我不想将它全部连接成一个巨大的String并将其传递给evaluateString.我宁愿能够加载代码,以便我可以从我传递给evaluateString的代码中调用它(有点像AddCode方法在Microsoft的脚本控制中工作).我想添加代码,就像我目前可以使用ScriptableObject.putProperty方法添加变量一样.
有没有办法做到这一点?有人可以提供代码段或文档链接.谢谢!
从文档和示例来看,对先前评估的对象的引用似乎是由范围控制的。
Context context = Context.enter();
try {
ScriptableObject scope = context.initStandardObjects();
Object out = Context.javaToJS(System.out, scope);
ScriptableObject.putProperty(scope, "out", out);
context.evaluateString(scope,
"function foo() { out.println('Hello, World!'); }", "<1>", 1, null);
context
.evaluateString(scope, "function bar() { foo(); }", "<2>", 1, null);
context.evaluateString(scope, "bar();", "<3>", 1, null);
} finally {
Context.exit();
}
Run Code Online (Sandbox Code Playgroud)
(Rhino 1.7 版本 2)
我知道有些人直接使用Rhino来获取最新版本,但是Java 6实现可以像这样评估脚本:
ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
engine.eval("function foo() { println('Hello, World!'); }");
engine.eval("function bar() { foo(); }");
engine.eval("bar();");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3580 次 |
最近记录: |