Angenommen, ich habe ein JavascriptBind Methodenaufruf in Skript JavaScript in Java Scripting
function js_main(args){
/* some code */
var x = api_method1(some_argument);
/* some code */
}
-Datei und ich versuche, es mit javax.scripting
die übliche Weise
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
engine.eval(...);
Nun ist die Ich möchte zu laufen Behandle den Aufruf an api_method1
in Javascript mit meiner Java-Klasse. Ich möchte eine Art von Mapping habe/Bindung von Anrufen das heißt jedes Mal das Skript api_method1(arg)
ruft eine Methode
public Object api_method1(Object arg){ ... }
(in der gleichen Klasse wie der Motor platziert) aufgerufen werden würde.
Kann ich das erreichen?
Was ist mit Marshalling Daten zu/von der Methode (neben den Primitiven)? – emesx
Um Daten für andere als primitive Daten vor- und zurückzugeben, können Sie JSON verwenden. Ihr Java-Code kann JSON mithilfe einer beliebigen JSON-Bibliothek serialisieren/deserialisieren. – sperumal
Sie sind ziemlich selbständig dafür. Sie könnten in JSON serialisieren (einfach aus JavaScript) und dann in Java deserialisieren (weniger einfach, aber machbar). Oder Sie können verschiedene Dienstprogramme verfügbar machen, um andere Java-Objekttypen zusammenzufügen. – Pointy