Supponiamo che io abbia un file JavaScriptBind chiamata nello script JavaScript Scripting Java
function js_main(args){
/* some code */
var x = api_method1(some_argument);
/* some code */
}
E io provo a farlo funzionare con javax.scripting
solito modo
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
engine.eval(...);
Ora il mi piacerebbe gestire la chiamata a api_method1
in Javascript con la mia classe Java. Mi piacerebbe avere una sorta di mappatura/legame di chiamate vale a dire ogni volta che lo script chiama api_method1(arg)
un metodo
public Object api_method1(Object arg){ ... }
(collocato nella stessa classe come il motore) sarebbe chiamato.
Posso ottenere questo?
E i dati di marshalling a/dal metodo (oltre ai primitivi)? – emesx
per passare i dati avanti e indietro per altro oltre che primitivo è possibile utilizzare JSON. Il codice Java può serializzare/deserializzare JSON utilizzando qualsiasi libreria JSON. – sperumal
Sei praticamente da solo per quello. È possibile serializzare su JSON (facile da JavaScript) e quindi deserializzare in Java (meno facile, ma fattibile). Oppure puoi esporre varie utilità per mettere insieme altri tipi di oggetti Java. – Pointy