0

我将 javascript 表达式嵌入到我的 java prog 中,如下所示 将简单的表达式语言放入 java

但是我现在意识到我需要直接使用 Rhino 而不是 ScriptEngine,因为我需要保持 Java 1.5 的兼容性,我想我可以按照以下方式运行评估

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);

将值映射到变量

4

2 回答 2

0

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

于 2011-07-18T19:51:01.063 回答
0

我认为你需要做的是以下几点:

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

请参阅公开 Java API Rhino 示例。

于 2011-07-19T01:02:21.673 回答