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

Servlets/JSP Java Discussion :

pb de javascript ds une servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut pb de javascript ds une servlet
    Bonjour,

    Alors voilà, j'essaye de récupéré une valeur entrée par l'utilisateur dans un prompt. Le prompt étant dans une servlet dont voici le code :

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();



    out.println("<html>");
    out.println("<head>");
    out.println("<title>Servlet essai</title>");

    out.println("</head>");
    out.println("<body>");

    float C=0;

    out.println("<script language=\"javascript\"> !C=prompt(\"hauteur :\" , \"\")</script>");

    out.println(C);

    out.println("</body>");
    out.println("</html>");
    Je sais pas comment faire pr récupéré la valeur C.
    Si qqn connaait la façon de faire, se serait génial !!!

  2. #2
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    Bon, voilà, j'ai réussi à récupérer ma valeur en String, mais comme il s'agit d'une hauteur, j'en ai besoin en float, mais j'ai une erreur quand j'exécute mon script.

    out.println("<script language=\"javascript\"> C=prompt(\"hauteur :\")</script>");
    float C2 = Float.parseFloat("<script language='Javascript'>document.write(C);</script>");
    out.println(C2);
    ERREUR :
    java.lang.NumberFormatException: For input string: "<script language='Javascript'>document.write(C);</script>"
    J'ai vérifié, je rentre un nombre, je peux l'afficher, il n'y a pas d'espaces, ni quoi que se soit d'autre, pourtant la méthode parseFloat ne fonctionne pas...

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Franchement, tu trouves que ça ressemble à un float ça ?
    float C2 = Float.parseFloat("<script language='Javascript'>document.write(C);</script>");
    Il faudrait que tu te documentes un peu parce qu'il semble qu'il te manque pas mal de bases...
    Une fondamentale :
    - le javascript s'exécute côté client (navigateur, IE, Firefox, etc...)
    - la servlet s'exécute côté serveur

    Donc, le parseFloat que tu fais n'as aucun sens ici. Tu essayes de convertir la chaîne (en bleu) en float, ça va pas l'faire...

    De manière générale, si tu veux faire une application web à base de client léger (html), le mieux est de définir des pages JSP (un mélange d'html et de code java) et des servlets (contrôleurs) mis en relation par l'intermédiaire d'un formulaire
    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
    17
    18
    19
    20
    21
    22
     
    // Dans la page JSP
     
    <form action="nomLogiqueDeServlet">
    Saisissez un nombre : <input type="text" name="argument1"/>
    </form>
     
    // Dans la servlet
     
    public void service(HttpServletRequest request, HttpServletResponse response)
    {
       float arg1_float = 0;
       String arg1 = request.getParameter("argument1");
       if ( arg1 != null )
       {
          arg1_float = Float.parseFloat(arg1);
          ...
       }
     
       // Pour renvoyer vers une page JSP
       request.getRequestDispatcher("/chemin/maPage1.jsp").forward(request, response);
    }
    Voilà, j'espère que ça te guidera un peu, mais comme dit, cherche un bon tuto pour bien commencer, tu en trouveras sur ce forum

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    Je comprend pas pourquoi ce n'est pas possible, j'ai pu récupéré la valeur dans une autre variable. Il s'agit d'un String qui appartient maintenant a ma servlet.

    De ce que j'en sais, on peut transformer une chaine en float ac cette méthode, alors pourquoi pas là.

    String s = "<script language='Javascript'>document.write(C);</script>"

    out.println(s); //me donne mon nombre (une chaine, je suis d'accord)

    Donc s est une variable de ma servlet.
    Pourquoi je peux pas la transformer en float ?

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Là, on est sur le serveur :
    Citation Envoyé par lolilola Voir le message
    String s = "<script language='Javascript'>document.write(C);</script>"
    System.out.println(s); // <- Rajoute cette ligne et regarde la console du serveur
    out.println(s); // <- Ici, tu écris sur la sortie standard (dans la page html)
    donc, après exécution et côté client, tu auras dans le code de ta page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script language='Javascript'>document.write(C);</script>
    alors que la page aura la valeur de la variable "C".

    Tu peux faire le test, regarde le source de la page dans ton navigateur
    (click droit + "Afficher la source" sous IE ou "Code source de la page" sous Firefox)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    Ok, j'ai a peu près compris.

    Donc la seule solution qu'il me reste est de passé par un formulaire.
    Je voulais éviter cette solution car je n'ai qu'une seule information à demander, mais tant pis, je vais faire comme ça puisque je n'ai pas d'autre choix.

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je n'ai pas dit que c'était la seule solution, il y a une alternative :
    il suffit de passer le paramètre dans l'url, dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script>
    function maFonction()
    {
       var retour = prompt(...)
       if ( retour != null ) 
       {
          window.location = "/monServeur/maServlet?monParametre=" + retour;
       }
    }
    </script>
    monServeur peut être retrouvé par request.getContextPath() côté serveur ou en via l'objet location en javascript...
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    Merci beaucoup !

    Mais au risque de passer vraiment pour une idiote (si c'est pas déjà fait, mais j'assume )
    Commen j'appelle la fonction créer ds le script ?

    Merci !

  9. #9
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    C'est bon j'ai trouver, mais j'ai une boucle avec mon prompt...

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lolilola Voir le message
    Mais au risque de passer vraiment pour une idiote (si c'est pas déjà fait, mais j'assume )
    Mais non, tu n'es pas une idiote, on a tous commencé un jour, si t'avais vu mes débuts en 2000 !...

    Pour répondre à ta question, si ta page ne fait que ça (un prompt et on envoie la réponse), tu peux ne garder que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      
    <script>
    var retour = prompt(...)   
    if ( retour != null )    
    {      
       window.location = "/monServeur/maServlet?monParametre=" + retour;   
    }
    </script>
    sinon, pour appeler la fonction, et bien il suffit de faire
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    Merci beaucoup pr ton aide !!

    J'ai encore une dernière chose...

    Que je fasse ac une fonction ou non, j'ai une boucle avec le prompt.

    J'ai essayer de faire un window.location.replace mais dans ce cas, ma variable vaut toujours 0, et non pas le nombre entré.

    Une idée ?

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer ton code actuel ?
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    Voilà mon code :

    out.println("<body>");

    float C2 = 0;

    out.println("<script language=\"javascript\">retour = prompt(\"hauteur : \");" +
    "if ( retour != null ){window.location =\"/Essai/essai?C2=\" +retour;} </script>");
    out.println(C2);

    out.println("</body>");

  14. #14
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Quand tu dis "je boucle avec le prompt", tu veux dire qu'il te pose toujours la question ?
    A priori, c'est normal, tu rappelles la même servlet je suppose, et comme tu ne traite pas le paramètre reçu, il te renvoi la page, qui te repose la question etc...
    Dans la servlet, il faudrait rajouter un test sur la valeur de C2, un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String c2 = request.getParameter("C2");
    if ( c2 == null )
    {
       ... tu fais le traitement actuel ...
    }
    else
    {
    ...
       out.println("Vous avez entré comme valeur " + c2);
    ...
    }
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    J'ai toujours le même problème....
    Je pense que ça vient du fait que mon script se situe dans ma servlet non ? Parce qu'en fait, mon script tourne en boucle, une fois qu'il est dedans il n'en sort pas, enfin, c'est l'impression que ça me donne.

  16. #16
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu as essayé de mettre un point d'arrêt dans la servlet ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    Alors, j'ai créer un html afin d'y mettre mon script javascript.

    Ca marche à un détail près...
    La valeur, je la récupère en String,il me la faut en float, mais je ne peux pas utiliser la méthode parseFloat car elle me génère une erreur : java.lang.NullPointerException

    Je commence à désespérer ! J'en suis pour finir, au même point qu'hier, mais avec une erreur différente

  18. #18
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer tout le code (servlet + page) ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  19. #19
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Par défaut
    dsl de pasavoir répondu avant.

    Finalement, j'ai utilisé un noueau formulaire. Maintenant, tout va bien

    Merci beaucoup pr ton aide

Discussions similaires

  1. Objet javascript dans une servlet
    Par amine84 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 02/10/2008, 10h14
  2. Réponses: 1
    Dernier message: 27/12/2007, 09h18
  3. appeler une servlet depuis javascript
    Par root76 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 22/05/2007, 11h12
  4. Réponses: 3
    Dernier message: 05/04/2007, 10h57
  5. javascript dans une servlet
    Par 18Marie dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 22/08/2006, 08h42

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