我正在努力从java调用javascript函数。我的问题来自于整个函数实际上是作为字符串参数接收的事实:
public void selectMethod(Map<T> item, String function)
其中function对象实际上是整个java脚本方法。我需要用nashorn
调用这个方法ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
我也需要传递带有map项的函数。当js函数修改地图对象时,我必须在java中打印出来。
我会帮助任何帮助。
答案 0 :(得分:1)
您可以在Invocable [https://docs.oracle.com/javase/8/docs/api/javax/script/Invocable.html#invokeFunction-java.lang.String-java.lang.Object...-]
上使用invokeFunction方法Nashorn引擎实现了javax.script.Invocable接口。来自你的&#34; selectMethod&#34; java方法,你可以这样做:
((Invocable)engine).invokeFunction(function, item);
我假设传递的脚本函数名称是全局脚本函数的名称[已经在引擎中通过&#34; eval&#34;早先打电话。]