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

Interfaces Graphiques en Java Discussion :

[Applet][Javascript] Erreur lors de recuperation de donnees


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut [Applet][Javascript] Erreur lors de recuperation de donnees
    Bonjour à tous,

    Voici le contexte de mon problème :

    J'ai un applet qui est défini de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class MonApplet extends Applet {
      private String str = "A";
      public String getStr() { return str; }
      ...
      public void start() {
        str = "B";
        System.out.println("Dans console : " + str);
      }
    }
    et je voudrais récuperer la valeur de la chaine str avec ma fonction javascript suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function aff() {
      document.write("Voici le contenu de str : <br>")
      document.write("Dans Javascript :  " + document.getElementById("MonApplet").getLogin() + "<br>")
    }
    Quand j'excecute mon programme dans un navigateur (IE ou Firefox), j'obtenais le résultat suivant :
    coté java :
    ------------
    Dans la console : B

    coté javascript :
    ------------------
    Voici le contenu de str :
    Dans Javascript : A <- ici j'ai comrpi que le javascript n'attendait pas que l'applet ai fini ses modifications.

    J'ai donc utilisé dans mon code HTML onload dans la balise BODY :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <BODY onload="aff();">
    Mais voici mes messages d'erreur depuis ce changement :
    coté java :
    ------------
    java.lang.NullPointerException
    at sun.plugin.viewer.LifeCycleManager.startAppletPanel(Unknown Source)
    at sun.plugin.viewer.WNetscapePluginObject.startPlugin(Unknown Source)
    at sun.plugin.viewer.WNetscapePluginObject$Initer.run(Unknown Source)

    coté javascript :
    ------------------
    Affichage de "Voici le contenu de str :"
    et l'erreur que je récupère dans la console javascript de Firefox : Erreur : document.getElementById("MonApplet") has no properties

    Si j'ai bien compris on dirait qu'après l'execution de l'applet la variable str soit vide. Après avoir testé plusieurs combinaisons, je ne vois pas comment faire.

    Merci pour votre aide

  2. #2
    Membre confirmé Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Par défaut

    je te propose de jeter un coup d'oeil ici
    je crois que ça pourrait t'aider

  3. #3
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut
    merci pour ton aide soulhouf, mais ce que je vau faire c'est dans le sens contraire de ton exemple. Je voudrais executer d'abord l'applet, puis récuperer la valeur de ma variable avec le javascript.

  4. #4
    Membre confirmé Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Par défaut
    est ce que tu utilises MAYSCRIPT dans la balise APPLET?
    si je ne dis pas de bêtises je crois que tu devrais l'utiliser pour appeler les methodes de ton applet...

  5. #5
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut
    J'ai testé en utilisant l'attribut MAYSCRIPT et pas de changement , mais cet attribut est utilisé pour que l'Applet accède au Javascript, non ?

  6. #6
    Membre confirmé Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Par défaut
    Citation Envoyé par stoj
    J'ai testé en utilisant l'attribut MAYSCRIPT et pas de changement , mais cet attribut est utilisé pour que l'Applet accède au Javascript, non ?
    oui c'est exact et si j'ai bien compris toi tu veux appeler des methodes de ton applet après le chargement de cette dernière.
    dans ce cas je crois qu'il faut arrêter l'applet à un moment donné (il faut personnaliser la methode stop()) mais je ne suis pas sûr car je ne l'ai jamais éssayé...

  7. #7
    Membre confirmé Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Par défaut
    essaie d'ajouter onLoad="document.getElementById("MonApplet").getLogin()" dans la balise body et normalement ça devrait marcher.
    sinon j'ai essayé de l'appeller comme tu l'a mentionné plus haut et il me sort la même erreur: Erreur : document.getElementById("MonApplet") has no properties

  8. #8
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut
    J'ai essayé dans la balise body :
    onLoad="document.getElementById("MonApplet").getLogin()"
    et aussi onLoad="document.getElementById('MonApplet').getLogin()"
    mais pas de changements.

    Merci pour tes propositions

  9. #9
    Membre confirmé Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Par défaut
    essaie de faire ça alors:
    onLoad="document.MonApplet.getLogin()"

  10. #10
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut
    Pareil
    Erreur : document.MonApplet has no properties

    Sinon j'ai aussi essayé d'implementer la method stop() de mon applet
    mais on dirait qu'il ne passe pas par elle car il n'affiche pas mon System.out.println("dans stop"); que j'ai placé dedans.

  11. #11
    Membre confirmé Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Par défaut
    ah oui je vois c'est normal, la methode stop n'est appelée que si tu réduit la fenêtre (pour faire une pause en quelque sorte)
    sinon je te propose de lancer une deuxieme page html à partir de la première (en cliquant sur un bouton par exemple) et dans laquelle tu fais appel à tes methodes...
    comme ça tu es sûr que l'applet a été interrompue vu que la durée de vie de l'applet est celle de la page...

  12. #12
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut
    Comment fais tu pour lancer une deuxieme page html à partir de la première avec un bouton ?

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Par défaut
    window.navigate('maNouvellePage.html'); ou tu peut utiliser les popup

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Par défaut
    Je te conseil pour ton problème de mettre ton code dans dans init au lieu de start. init a l'avantage d'être appelé une seule fois au chargement de la page.

  15. #15
    Membre confirmé Avatar de soulhouf
    Inscrit en
    Août 2005
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 213
    Par défaut
    jette un coup d'oeil sur la FAQ HTML pour plus d'infos.

  16. #16
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut
    merci salber, mais le code dans la methode init() n'as pas changer le problème

  17. #17
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut
    J'ai trouvé la solution,
    mon code était légèrement plus compliqué que l'exemple que j'ai expliqué.
    Il utilise une méthode native pour recuperer les informations que je stockais dans la variable "str" (la methode s'appelle getDonnees()).

    Pour synchroniser le javascript après l'execution de l'Applet j'ai forcé dans le getStr() l'execution de getDonnees() en utilisant un boolean travailEffectue, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public String getStr() {
      if (travailEffectue==false) {
        getDonnees(); // getDonnees charge str
      }
      return str;
    }
    comme ca dans le javascript lors de l'utilisation de document.getElementById("MonApplet").getStr(); on est sur que l'applet a charger la chaine str en premier.

    Merci a tous pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur lors de la recuperation d'une $ dans une autre page
    Par boubourse92 dans le forum Langage
    Réponses: 2
    Dernier message: 06/12/2007, 12h41
  2. Erreur lors d'un Load des donnee dans ma table
    Par mr.net dans le forum DB2
    Réponses: 1
    Dernier message: 15/09/2007, 07h09
  3. Erreur lors de la recuperation d'un date dans mysql
    Par tchoukapi dans le forum JDBC
    Réponses: 5
    Dernier message: 10/07/2007, 00h15
  4. Réponses: 2
    Dernier message: 20/03/2007, 11h50
  5. [Applets] Recuperer les donnees
    Par calypso dans le forum Applets
    Réponses: 11
    Dernier message: 05/04/2005, 16h18

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