Rhino: Wie übergeben Sie Java-Objekt ein Skript, wo kann referenziert werden, als "dieses"

Ich bin neu auf JSR-223 Java-Scripting, eigentlich bin ich ja die Umschaltung von MVEL standard Mozilla Rhino-JS. Ich habe gelesen, alle Unterlagen, aber nicht weiterkommen. Ich habe versucht, einige Java-Referenz-Objekte aus dem script von Bindungen ebenso wie im tutorial:

    //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-Objekt verwiesen wird, wird vom Drehbuch als Eigenschaft bean. So weit So gut.

Aber ich will meine Referenz-Objekt im Skript als this möchte ich seine Eigenschaften und Methoden ohne Präfix oder explizit mit dem Präfix this. Genau wie dieser:

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

Ich weiß, dass this in JavaScript spezielle Bedeutung (wie in Java), aber in der MVEL-scripting, was getan werden könnte, indem Sie benutzerdefinierte ParserContext und benutzerdefinierte PropertyHandler.

Ist so etwas möglich in Rhino?

Vielen Dank.

InformationsquelleAutor mschayna | 2011-07-15
Schreibe einen Kommentar