I’ve been thinking a fair bit about server side JavaScript recently, but haven’t really dug in. One of the things I’ve been wondering is how easy it is to define a host object with Rhino. Turns out it’s trivial:
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ScriptableObject;
public class Test {
public static class TestHost extends ScriptableObject {
private String val = "";
public String getClassName() {
return "TestHost";
}
public String jsGet_val() {
return val;
}
public void jsSet_val(String s) {
val = s;
System.out.println("from java: " + s);
}
}
public static void main(String args[]) throws Exception {
Context c = Context.enter();
ScriptableObject so = c.initStandardObjects();
ScriptableObject.defineClass(so, TestHost.class);
System.out.println(c.evaluateString(so,
"var t = new TestHost(); t.val='ee';'from script: '+t.val", "",
1, null));
}
}
Results in:
from java: ee from script: ee
Advertisement

Thank you for this useful information.