Bonjour,
J'essai d'utiliser un script "js" existant au sein d'une application JAVA.
Le problème actuel est que ce script utilise l'objet "document" mis en place automatiquement par les browser representant la page html à traiter.
Cet objet étant normalement un objet representant le standard w3c.dom j'ai bien essayé de placer un objet implémentant l'interface org.w3c.dom.Document dans le context du script mais sans succés.
Voici comment je charge le script :
Ensuite voici comment je l'execute:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public static ScriptEngine createGooglePrettifyEngine() { ScriptEngineManager scriptMgr = new ScriptEngineManager(); ScriptEngine jsEngine = scriptMgr.getEngineByName("JavaScript"); InputStream is = Prettifier.class.getResourceAsStream("prettify/prettify.js"); try { Reader reader = new InputStreamReader(is); jsEngine.eval(reader); return jsEngine; } catch (ScriptException ex) { ex.printStackTrace(); } return null; }
Le 1er problème constaté concerne les profils des méthodes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 InputStream is = .....; Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse( is ); ScriptEngine prettifier = createGooglePrettifyEngine(); Invocable invocable = (Invocable)prettifier; prettifier.put("document" , document ); String prettified = (String)invocable.invokeFunction("prettyPrint");
Par exemple la méthode getElementsByTagName
- Dans org.w3c.dom.Document cette méthode retourne une NodeList
- Dans le javascript cette méthode retourne un array
Alors j'ai décidé d'utiliser la déléguation afin de creer un objet ayant des profils de méthodes adéquat. mais de fils en aiguille, ca me fait réécrire la puparts des objets DOM sans pour autant m'en sortir.
Alors comment mettre en place un objet "document" au context du script qui soit conforme ??
Partager