如何转换java ScriptEngine代码以使用Rhino

时间:2011-07-18 19:42:45

标签: java rhino scriptengine

我将javascript表达式嵌入到我的java编程中,如下所示 Putting a simple expression language into java

但我现在意识到我需要直接使用Rhino而不是ScriptEngine,因为我需要保留Java 1.5 compatabiliy,我想我可以将评估作为folllows来运行

Context context = Context.enter();
try {
    Scriptable scope = context.initStandardObjects();
    String result = context.evaluateString(scope, expr, null, 0, null);
    return result
} finally {
    Context.exit();
}

但是有什么替代

jsEngine.put(fieldname.getScriptVariable(), value);

将值映射到变量

2 个答案:

答案 0 :(得分:0)

如果你必须与java 1.5兼容,至少要使用来自Jakarta项目的BSF框架。它类似于java 1.6中引入的java脚本框架

答案 1 :(得分:0)

我认为您需要做的是以下内容:

Object wrappedObject = Context.javaToJS(yourObjectHere, scope);
ScriptableObject.putProperty(scope, "yourVariableNameHere", wrappedObject);

请参阅Expose Java APIs Rhino示例。