Я знаю, что могу использовать Invocable класс для вызова методов на классе:Как получить атрибут JS-объекта из Java?
import javax.script.{ScriptEngine, ScriptEngineManager, Invocable}
val engine = new ScriptEngineManager().getEngineByExtension("js")
val invoker = engine.asInstanceOf[Invocable]
val person = engine.eval(s"""
new function() {
this.name = "Rick";
this.age = 28;
this.speak = function() {
return this.name + "-" + this.age;
}
};
""")
invoker.invokeMethod(person, "speak") //returns "Rick-28"
Но, как я могу получить атрибут человека name
? Я попробовал invoker.invokeMethod(person, "name")
и получил NoSuchMethodError
.
Я думаю, что вы придется «разоблачить» всех участников, которых вы хотите поделиться с java-частью, иначе создайте геттеры (и, возможно, сеттеры). – Rafouille
Вы можете попытаться назначить человека переменной в JavaScript и использовать 'engine.get ('person.name')' – jcubic
try 'person.get (" name ")' – awd