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

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


函数对象实际上是整个Java脚本方法。我需要用nashorn调用此方法

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");


我还需要将功能与地图项一起传递。当js函数修改地图对象时,我必须用Java将其打印出来。

我会寻求任何帮助。

最佳答案

您可以在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接口。从您的“ selectMethod” java方法中,您可以执行以下操作:

((Invocable)engine).invokeFunction(function, item);


我假设传递的脚本函数名称是全局脚本函数的名称[已通过前面的“ eval”调用在引擎中定义)。

关于java - 使用参数从Java调用javascript函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38945175/

10-10 17:58
查看更多