Nashorn(Java 8)を使用してJavascript関数に渡す必要があるJavaScriptオブジェクトを実際にデータベースから取得します。エンジンは渡されたパラメータをJavaScriptで文字列として扱います。私はそれをJavascriptオブジェクトとして識別したい。以下はNashornを使用してJavascriptオブジェクトをJavaからJavascriptに渡す方法
コードスニペットです:
String script = "function genData(dataModel) { return 'hello world '+ dataModel.url.value + ' done'; }";
//"{url : {value : "abc.com",type : "string"},layout : {value : "",type : "string"}}";
String dataModel = "{url : {value : \"abc.com\",type : \"string\"},layout : {value : \"\",type : \"string\"}}";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
Invocable inv = (Invocable) engine;
result = inv.invokeFunction("genData", dataModel);
私が手にエラーがある:
javax.script.ScriptException:TypeError例外:行番号1
あなたのデータモデルは、リテラル有効な文字列ではありません.... –
まあアイデアはどのようにjavascriptオブジェクト示すことでした見えて、あまり秘密にしないでください。私はコメントとしてそれを移動し、それが役に立ったら文字列をエスケープしました – iqz