我正在努力从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/