0

RhinoScriptEngine でサードパーティの JavaScript ファイルを実行しています。このファイルには、「this」内のメソッドへの参照が含まれています。つまり、this.getField です。このファイルは、「this」が js Window オブジェクト以外のオブジェクトであるという想定で記述されています。そのため、スクリプトを実行すると、次のエラーが発生します。

オブジェクト [object Global] に関数 getField が見つかりません

Java ScriptEngine (Rhino) を使用して、「this」が参照しているオブジェクトを変更するにはどうすればよいですか? ありがとう!

通常、scriptEngine.eval(script) のようなものを呼び出すことができます。グローバルな「this」オブジェクトへの参照がない限り、これはうまく機能します。似たようなことをしたいのですが、「これ」とは何かを定義できる場所です。

4

1 に答える 1

1

この回答が 3 年以上経っていることはわかっていますが、解決策を探してこのページにたどり着いた人がいる場合は、次のコードが役に立ちました。

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript"); //Your Engine Name
engine.put("this", theObject);

これで、参照thisすると目的のオブジェクトにアクセスできます。

于 2015-11-13T04:01:51.983 に答える