使用参数从java调用javascript函数

时间:2016-08-14 18:16:03

标签: java nashorn

我正在努力从java调用javascript函数。我的问题来自于整个函数实际上是作为字符串参数接收的事实:

public void selectMethod(Map<T> item, String function)

其中function对象实际上是整个java脚本方法。我需要用nashorn

调用这个方法
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

我也需要传递带有map项的函数。当js函数修改地图对象时,我必须在java中打印出来。

我会帮助任何帮助。

1 个答案:

答案 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;早先打电话。]