Я новичок в JSR-223 Java Scripting, на самом деле я переключаюсь с MVEL на стандарт Mozilla Rhino JS .Я прочитал всю документацию, но застрял.Я пытался ссылаться на некоторые объекты Java из скрипта с помощью привязок, как в учебном пособии:
// my object
public class MyBean {
public String getStringValue() { return "abc" };
}
// initialization
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
// add bindings
engine.put("bean", new MyBean());
// evaluate script, output is "abc"
engine.eval("print(bean.stringValue)");
На объект Java ссылаются из скрипта как свойство bean
.Все идет нормально.
Но я хочу ссылаться на свой объект в скрипте как this
, я хочу использовать его свойства и методы без префикса или явно с префиксом this
.Вот так:
// add bindings
engine.put(....., new MyBean()); // or whatever ???
// evaluate scripts, all have the same output "abc"
engine.eval("print(stringValue)");
engine.eval("print(this.stringValue)");
Я знаю, что this
в JavaScript имеет особое значение (как в Java), но в сценариях MVEL это можно сделать с помощью пользовательских ParserContext
иобычай PropertyHandler
.
Возможно ли что-то подобное в Rhino?
Большое спасибо.