2016-08-14 4 views
0

Я изо всех сил пытаюсь вызвать функцию javascript из java. Моя проблема исходит из того, что вся функции фактически полученная в качестве аргумента строки:Вызов функции javascript из java с аргументами

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

где объект функции фактически весь метод Java Script. Мне нужно позвонить по этому методу с помощью nashorn

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

Мне также нужно передать функцию с помощью элемента карты. Когда функция js изменяет объект карты, я должен ее распечатать в java.

Я бы посоветовал любую помощь.

ответ

1

Вы можете использовать метод invokeFunction на Invocable [https://docs.oracle.com/javase/8/docs/api/javax/script/Invocable.html#invokeFunction-java.lang.String-java.lang.Object...-]

двигатель Насхорн реализует интерфейс javax.script.Invocable. Из вашего метода Java «selectMethod», вы могли бы сделать что-то вроде:

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

Я предполагаю, что имя функции сценария передается, что глобальная функция сценария [который уже был определен в двигателе с помощью «Eval» вызов сделаны ранее] ,

 Смежные вопросы

  • Нет связанных вопросов^_^