Je sais que je peux utiliser la classe Invocable pour invoquer des méthodes sur une classe:Comment obtenir l'attribut d'un objet JS à partir de 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"
Mais, comment puis-je obtenir l'attribut name
de la personne? J'ai essayé invoker.invokeMethod(person, "name")
et j'ai obtenu un NoSuchMethodError
.
Je pense que vous devra "exposer" tous les membres que vous voulez partager avec java part, aka créer des getters (et éventuellement des setters). – Rafouille
Vous pouvez essayer d'affecter la personne à la variable en JavaScript et utiliser 'engine.get ('person.name')' – jcubic
try 'person.get (" name ")' – awd