IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[Java6] Utiliser un script "Javascript" existant


Sujet :

Langage Java

  1. #1
    Membre �m�rite
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    D�tails du profil
    Informations personnelles :
    �ge : 47
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par d�faut [Java6] Utiliser un script "Javascript" existant
    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 :

    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;
     
        }
    Ensuite voici comment je l'execute:

    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");
    Le 1er probl�me constat� concerne les profils des m�thodes.
    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 ??

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    2 354
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire (Rh�ne Alpes)

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 2 354
    Par d�faut
    Si cet objet document est pertinent pour le script, je ne vois pas d'autre moyen que de tout retaper. Peut �tre peux-tu faire une page blanche � l'aide des m�thodes de jaxp et/ou DOM, je pense ?

    Sinon, peut �tre peux-tu faire une interface bouchon � l'aide de Proxy.

  3. #3
    Membre �m�rite
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    D�tails du profil
    Informations personnelles :
    �ge : 47
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par d�faut
    Bon finalement j'ai trouv� une fonction dans le script qui ne n�cessite pas d'objet document.

    Cependant l'execution de cette fonction ne donne pas le m�me r�sultat entre une execution par java ou par un browser...

    Le script js est celui de http://code.google.com/p/google-code-prettify/

    La fonction appel�e: "prettyPrintOne" prenant une chaine de caract�res � colorier syntaxiquement.

    J'ai l'impression qu'a partir de java, des blocs d'initialisations ne s'executent pas ou mal...

    Bref, je vais encore chercher mais ca devient fatiguant.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo