Как конвертировать Java ScriptEngine код для использования Rhino - PullRequest
0 голосов
/ 18 июля 2011

Я встраиваю выражения javascript в свою прогу java следующим образом Ввод простого языка выражений в 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);

для сопоставления значений с переменными

Ответы [ 2 ]

0 голосов
/ 19 июля 2011

Я думаю, вам нужно сделать следующее:

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

См. Expose Java APIs Пример Rhino.

0 голосов
/ 18 июля 2011

Если вам нужна совместимость с java 1.5, используйте как минимум BSF-фреймворк из проекта Jakarta. Это похоже на среду сценариев Java, представленную в Java 1.6

...