Appeler une méthode Java depuis javascript
Bonjour,
je présente mon petit problème:
je dois créer une classe java qui doit exécuter un script (que je dois créer aussi). J'utilise le moteur JavaScript Rhino. je précise que ça fait partie d'un gros projet déjà existant.
La classe java récupère une liste de pilotes. Après je parcoure la liste et pour chaque pilote je dois exécuter le script qui doit calculer le temps de vol de chaque pilote.
Voici le code java:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
for (Pilote pilote : piloteList) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
try {
engine.put("pilote", pilote);
engine.eval(new FileReader("ScriptHcv.js"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ScriptException e) {
e.printStackTrace();
}
Invocable inv = (Invocable) engine;
try {
inv.invokeFunction("calculHcv", pilote);
} catch (ScriptException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
} |
Le script doit récupérer pour chaque pilote la liste des vols qu'il a effectués, la date de début et la date de fin du vol. les méthodes getListFlights, getFlightBeginDate et getFlightEndDate se trouvent dans d'autres classes du projet que j'importe dans mon script :importClass(....);
Le script:
Code:
1 2 3 4 5
| function calculHcv(pilote){
var listFlights = pilote.getListFlights();
for (var flight in listFlights) {
var beginDate = flight.getFlightBeginDate(); |
J'arrive à récupérer la liste des vols grâce à pilote.getListFlights(); mais j'ai une erreur quand j'appelle la méthode getFlightBeginDate et j'obtiens ce message d'erreur : Cannot find function getFlightBeginDate.
Donc j'ai conclu que je ne peux utiliser les méthodes java que pour les objets que j'exporte dans mon code JavaScript grâce à la méthode put, sauf que je sais plus comment m'y prendre dans ce cas pour effectuer le traitement demandé dans le script.
Sinon je précise aussi que j'ai pas de contraintes pour le choix du langage de script, donc si vous connaissez d'autres langages mieux adaptés à ce genre de traitement ça sera pas de refus :)