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

  1. #1
    Battosaiii
    Invité(e)
    Par défaut [Rhino] Comment executer une commande javascript d'un code java ?
    Bonjour ,
    la question est dans le titre :
    Comment executer une commande javascript d'un code java ?
    a+

  2. #2
    Membre expert
    Avatar de GLDavid
    Homme Profil pro
    LIMS manager, bio/chemoinformatique
    Inscrit en
    janvier 2003
    Messages
    2 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : LIMS manager, bio/chemoinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : janvier 2003
    Messages : 2 728
    Points : 3 750
    Points
    3 750
    Par défaut
    Certes mais il nous manque le contexte.
    Ton code Java, c'est quoi ? Une servlet, une JSP, une application .... ?
    Si c'est une JSP, rien de bien compliqué, une JSP n'est ni plus ni moins qu'une page HTML avec des scriptlets Java.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : avril 2002
    Messages : 13 934
    Points : 22 987
    Points
    22 987
    Billets dans le blog
    1
    Par défaut
    Salut,

    C'est à dire ? Pourrais-tu donner plus d'explication

    a++

  4. #4
    Battosaiii
    Invité(e)
    Par défaut
    ok voila :
    Je lance une commande javascript du type smart("filename") qui est un java host object. En gros smart va appele une classe java.
    Dasn cette classe java je realise differentes operations. A la fin
    je veux executer dans ce java host object une commande javascript du type
    load("output").
    Ai je ete clair ?

  5. #5
    Battosaiii
    Invité(e)
    Par défaut
    ok je simplifie le truc. Je veux executer du javascript depuis java .
    Comment fait on ?

  6. #6
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    cf Rhino

  7. #7
    Battosaiii
    Invité(e)
    Par défaut
    Justement c'est pas tres clair dans Rhino. C'est pourquoi je demandais conseil.

  8. #8
    Membre confirmé Avatar de spekal
    Inscrit en
    mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Effectivement, je trouve que la doc de Rhino n'est pas très claire, et le projet à l'air peu actif... c'est bizzarre pour un truc qui est sur un domaine en pleine ébullition, et qui je crois à été retenu pour être intégré à un JDK ?

    Voici comment je lance un script rhino (donc javascript) depuis java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                ScriptableObject o;
                String[] script =  {"unscript.js"};
     
                Main.getGlobal();
                o = Main.getScope();
                o.defineProperty("panier", _panier, ScriptableObject.DONTENUM);
                o.defineProperty("salade", _salade, ScriptableObject.DONTENUM);
                ScriptableObject.callMethod(o, "load", script);
    Hope this help. (surtout que j'ai pas tout compris aussi).

  9. #9
    Battosaiii
    Invité(e)
    Par défaut
    Je ne comprends pourquoi tu definis salade et panier ?

  10. #10
    Membre confirmé Avatar de spekal
    Inscrit en
    mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Et pourquoi pas ? Je suis maître à bord, non ? C'est moi l'chef !

    Plus sérieusement, par cette combine, _salade et _panier sont des objets java que l'on pourra accéder en javascript, depuis le script script.js, en écrivant salade ou panier.

  11. #11
    Battosaiii
    Invité(e)
    Par défaut
    En gros ce que je voudrais faire c'est de javascript lancer une commande de type :

    smartload("std/file.js")

    Cette fonction fait la meme chose que load. La difference c'est que smartload
    peut etre utiliser ou tu veux dans le repertoire. Smartload est une fonction que je veux creer moi meme.
    Load peut charger des javascript source dans le meme dossier.

    Je voudrais que ce soit possible d'invoquer cette fonction smartload d'un javascript. Je voudrais que smartload existe dans un java code. Tu vois ce que je veux dire ?

  12. #12
    Membre confirmé Avatar de spekal
    Inscrit en
    mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Je ne vois pas vraiment ce que tu veux dire, et encore moins à quoi cela servirait...

    Peut être voudrais-tu disposer d'objets à la fois en java et en javascript ?... En ce cas, mon exemple de defineProperty est pas mal il me semble, et il y a aussi les ScriptableObject, dont tu peux trouver un exemple ici. Je sais bien que la doc est pas géniale, mais il faut la regarder, et je ne suis pas un expert de Rhino !

  13. #13
    Battosaiii
    Invité(e)
    Par défaut
    Ok je vais expliquer clairement.

    je veux CREER une commande javascript :
    smartload("std/utilities.js")


    Cette commande va faire la meme chose que load("std/utilities.js")
    mais en plus pointue. Les details ne sont pas importants. Ce qui est important
    pour moi c'est comment creer smartload("")

  14. #14
    Battosaiii
    Invité(e)
    Par défaut
    Je voudrais utiliser la fonction load deja definie dans javascript.
    Or dans cet exemple il utilise une fonction f qu il a definie dans son javascript.


    Calling JavaScript functions

    To get the function f, call it, and print the result, we add this code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Object fObj = scope.get("f", scope);
        if (!(fObj instanceof Function)) {
            System.out.println("f is undefined or not a function.");
        } else {
            Object functionArgs[] = { "my arg" };
            Function f = (Function)fObj;
            Object result = f.call(cx, scope, scope, functionArgs);
            String report = "f('my args') = " + Context.toString(result);
            System.out.println(report);
        }
    J'ai remplace
    Object fObj = scope.get("load", scope); mais il me renvoir une java.nullexception.
    Quel peut etre le probleme ?
    A+

  15. #15
    Battosaiii
    Invité(e)
    Par défaut
    Je voudrais ajouter au contexte avec Rhino une fois pour toute
    une commande javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     String x = "function smartLoad(fileName) {var a = smartLoad.setSmartLoaderWrapper(\"jsgen/JSWsdlModel.js\");var b = smartLoad.getAbsolutePath();load(b);}";
    Mas solution est biase car a chaque fois que je vais lance Rhino je vais executer evaluateString

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     String x = "function smartLoad(fileName) {var a = smartLoad.setSmartLoaderWrapper(\"jsgen/JSWsdlModel.js\");var b = smartLoad.getAbsolutePath();load(b);}";
            String buffer = x + jScript.toString();
            Object result = ctx.evaluateString(glb, buffer, "", 1, null);
    Dans l'ideal j'aurais voulu pousser dans le contexte de cette facon:
    mais je ne sais pas comment faire avec une fonction javascript.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ScriptableObject.putProperty(global, "smartLoader",
                Context.javaToJS(wsdlGenData.getSmartLoaderWrapper(), global));
    A+

  16. #16
    Candidat au Club
    Femme Profil pro
    Assistant en informatique
    Inscrit en
    novembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Assistant en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Rhino
    Désolée mais je cherche un interpréteur de JS comme Firebug on m'a conseillé Rhino. Je voulais savoir il fait quoi exactement?

    Merci par avance.
    Séraphine
    NB: La doc que j'ai trouvé est moins explicite à ce sujet.

Discussions similaires

  1. comment executer une macro en ligne de code ?
    Par legyptien dans le forum VB.NET
    Réponses: 7
    Dernier message: 05/10/2012, 17h12
  2. comment executer une commande a partir d’un programme
    Par ryoussef19 dans le forum Visual C++
    Réponses: 2
    Dernier message: 27/08/2007, 09h28
  3. comment executer une commande
    Par 7awela dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/06/2007, 00h56
  4. Réponses: 5
    Dernier message: 01/08/2006, 13h41
  5. Réponses: 4
    Dernier message: 03/12/2004, 11h18

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