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 :

Passage de paramètres entre la JSP et la servlet


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Par défaut Passage de paramètres entre la JSP et la servlet
    Bonjour,

    Cela fait déjà un bon bout de temps que je rencontre un problème vraiment énervant : Des paramètres n'arrivent pas à passer de la jsp à la servlet.
    C'est-à-dire que je n'arrive pas à faire un "request.getParameter("nom_param")", et si j'essaie de faire un print de la valeur dans la méthode Post j'ai une chaine vide..
    Pire, au moment de valider le formulaire, je vois que les champs sont vidés avant même que je sois redirigé vers la page suivante...

    Je vous donne un exemple de code qui ne fonctionne pas. J'ai un formulaire qui contient plusieurs champs et l'ajout d'informations (qui devrait ajouter un utilisateur dans la base de données avec ses coordonnées) dans celui-ci ne marche pas; l'utilisateur est créé mais sans aucune information, puisque la récupération des données échoue

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    public void ajouterUtilisateurGet(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException {
         request.getRequestDispatcher("/WEB-INF/jsp/administrateur/ajouterAdmin.jsp").forward(request, response);
    }
     
    public void ajouterUtilisateurPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            Session session = HibernateUtil.getSessionFactory().openSession();
            Transaction tran = session.beginTransaction();
            boolean erreur = false;
            String mail = request.getParameter("mail");
            Query query = session.createQuery("from Utilisateur where mail='" + mail + "'");
            List<Utilisateur> utilisateurs = query.list();
            if (utilisateurs.size() > 0) {
                erreur = true;
                request.setAttribute("message_mail", "L'e-mail rentré existe déjà pour un autre compte.");
            }
     
            if (erreur) {
                tran.commit();
                session.close();
                this.getServletContext().getRequestDispatcher("/WEB-INF/jsp/administrateur/ajouterUser.jsp").forward(request, response);
            } else {
                /* ici la récupération échoue !!!! */
                Utilisateur utilisateur = new Utilisateur();
                utilisateur.setNom(request.getParameter("nom"));
                utilisateur.setPrenom(request.getParameter("prenom"));
                utilisateur.setMail(request.getParameter("mail"));
                utilisateur.setPassword(request.getParameter("mdp"));
                utilisateur.setTelephone(request.getParameter("telephone"));
                utilisateur.setAdministrateur(true);
                session.save(utilisateur);
     
                tran.commit();
                session.close();
                response.sendRedirect(request.getContextPath() + "/admin/listerUsers.do");
            }
        }

    Maintenant voici à quoi ressemble mon 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <c:set var="root" value="${pageContext.request.contextPath}" />
    <%@taglib tagdir="/WEB-INF/tags" prefix="t" %>
    <t:section nom="Modification de compte" action="">
     
        <div class="cleaner_h40"></div>
     
     
        <div id="contact_form">
     
            <form action="#" method="post" class="login" 
                  name="creeCmpte" id="creeCmpte" >
     
                <p><label for="nom" >Nom : </label>
                    <input id="nom" name="nom" type="text"  />
                </p>
     
                <p><label for="prenom" >Prénom : </label>
                    <input id="prenom" name="prenom" type="text"  />
                </p>
     
                <p><label for="mail" >E-mail : </label>
                    <input id="mail" name="mail"  size="40" />
                </p>
     
                <p><label for="telephone" >Téléphone : </label>
                    <input id="telephone" name="telephone" />
                </p>
     
                <br>
     
                <input id="valid" style="font-weight: bold;" class="submit_btn" 
                       name="submit" type="submit" value="Valider"/>
            </form>
     
     
        </div>
     
    </t:section>
    J'utilise des tags personnalisés pour appeler une autre page jsp qui englobera cette page (et qui va contenir l'entête etc...), c'est donc à ça que correspond la commande </t:section>

    Merci beaucoup de votre aide !!

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 56
    Par défaut
    Essaye d'utiliser un get au lieu de post dans la balise<form>

  3. #3
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 24
    Par défaut
    Tu n'a pas d'erreur sur ta servlet?
    ou sont les methodes doGet et doPost?
    Ta servlet doit hériter de HttpServlet et il faut implémenter doPost pour recuperer les requetes de type post, a moins que tu n 'utilise un framework particulier.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Par défaut
    Bonjour,

    Je tiens à vous remercier pour vos réponses.

    Je viens de régler le problème, c'était à cause d'un script qui m'effaçait les champs avant même la transmission au serveur.

    * Pour la méthode Get je n'aurai pas pu l'utiliser parce que je serai obligé de passer le mot de passe en clair dans l'url ce qui n'est pas très pratique..

    * Les méthodes que j'ai présentées sont appelées par les méthodes doGet et doPost qui sont correctement implémentées (j'aurais dû le préciser désolé)

    Merci à tous !

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 56
    Par défaut
    Svp n'oubliez pas de marquer la discussion comme résolu.
    Merci

  6. #6
    Nouveau candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 2
    Par défaut merci donnez moi votre adresse e-mail
    Citation Envoyé par sanzo1988 Voir le message
    Bonjour,

    Cela fait déjà un bon bout de temps que je rencontre un problème vraiment énervant : Des paramètres n'arrivent pas à passer de la jsp à la servlet.
    C'est-à-dire que je n'arrive pas à faire un "request.getParameter("nom_param")", et si j'essaie de faire un print de la valeur dans la méthode Post j'ai une chaine vide..
    Pire, au moment de valider le formulaire, je vois que les champs sont vidés avant même que je sois redirigé vers la page suivante...

    Je vous donne un exemple de code qui ne fonctionne pas. J'ai un formulaire qui contient plusieurs champs et l'ajout d'informations (qui devrait ajouter un utilisateur dans la base de données avec ses coordonnées) dans celui-ci ne marche pas; l'utilisateur est créé mais sans aucune information, puisque la récupération des données échoue

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    public void ajouterUtilisateurGet(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException {
         request.getRequestDispatcher("/WEB-INF/jsp/administrateur/ajouterAdmin.jsp").forward(request, response);
    }
     
    public void ajouterUtilisateurPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            Session session = HibernateUtil.getSessionFactory().openSession();
            Transaction tran = session.beginTransaction();
            boolean erreur = false;
            String mail = request.getParameter("mail");
            Query query = session.createQuery("from Utilisateur where mail='" + mail + "'");
            List<Utilisateur> utilisateurs = query.list();
            if (utilisateurs.size() > 0) {
                erreur = true;
                request.setAttribute("message_mail", "L'e-mail rentré existe déjà pour un autre compte.");
            }
     
            if (erreur) {
                tran.commit();
                session.close();
                this.getServletContext().getRequestDispatcher("/WEB-INF/jsp/administrateur/ajouterUser.jsp").forward(request, response);
            } else {
                /* ici la récupération échoue !!!! */
                Utilisateur utilisateur = new Utilisateur();
                utilisateur.setNom(request.getParameter("nom"));
                utilisateur.setPrenom(request.getParameter("prenom"));
                utilisateur.setMail(request.getParameter("mail"));
                utilisateur.setPassword(request.getParameter("mdp"));
                utilisateur.setTelephone(request.getParameter("telephone"));
                utilisateur.setAdministrateur(true);
                session.save(utilisateur);
     
                tran.commit();
                session.close();
                response.sendRedirect(request.getContextPath() + "/admin/listerUsers.do");
            }
        }

    Maintenant voici à quoi ressemble mon 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <c:set var="root" value="${pageContext.request.contextPath}" />
    <%@taglib tagdir="/WEB-INF/tags" prefix="t" %>
    <t:section nom="Modification de compte" action="">
     
        <div class="cleaner_h40"></div>
     
     
        <div id="contact_form">
     
            <form action="#" method="post" class="login" 
                  name="creeCmpte" id="creeCmpte" >
     
                <p><label for="nom" >Nom : </label>
                    <input id="nom" name="nom" type="text"  />
                </p>
     
                <p><label for="prenom" >Prénom : </label>
                    <input id="prenom" name="prenom" type="text"  />
                </p>
     
                <p><label for="mail" >E-mail : </label>
                    <input id="mail" name="mail"  size="40" />
                </p>
     
                <p><label for="telephone" >Téléphone : </label>
                    <input id="telephone" name="telephone" />
                </p>
     
                <br>
     
                <input id="valid" style="font-weight: bold;" class="submit_btn" 
                       name="submit" type="submit" value="Valider"/>
            </form>
     
     
        </div>
     
    </t:section>
    J'utilise des tags personnalisés pour appeler une autre page jsp qui englobera cette page (et qui va contenir l'entête etc...), c'est donc à ça que correspond la commande </t:section>

    Merci beaucoup de votre aide !!

Discussions similaires

  1. Passage de paramètres entre 2 pages jsp
    Par baya1 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 25/11/2007, 17h38
  2. Passage de paramètres entre JSP
    Par jason69 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 04/09/2007, 20h49
  3. passage de paramètre entre formulaire et état
    Par thufir hawat dans le forum IHM
    Réponses: 13
    Dernier message: 21/12/2005, 22h32
  4. [jsp][servlet]passage de paramètre entre deux frames
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2004, 11h14
  5. [Forms]Passage de paramètre entre Forms et Reports
    Par jack554 dans le forum Reports
    Réponses: 4
    Dernier message: 30/03/2004, 13h58

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