Suppose I have a Javascript file
function js_main(args){
/* some code */
var x = api_method1(some_argument);
/* some code */
}
And I try to run it with javax.scripting the usual way
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
engine.eval(...);
Now the I’d like to handle the call to api_method1 in Javascript with my Java class. I’d like to have some kind of mapping/binding of calls i.e. each time the script calls api_method1(arg) a method
public Object api_method1(Object arg){ ... }
(placed in the same class as the engine) would be called.
Can I achieve this?
engine.createBindings()to make a Bindings object;put an object exposing your method into the bindings with some name:
Then in JavaScript there’ll be a global “api” object you can call:
The facility is easy to use, but be careful with what you pass back and forth; it doesn’t do that much to convert JavaScript types to Java types.