Précédent   Forum du club des développeurs et IT Pro > Java > Développement Web en Java
Développement Web en Java Forum d'entraide sur les technologies Web de Java (JSP/Servlets, Portlets, Applets, frameworks Web, etc.) Avant de poster -> FAQ Java EE
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/06/2012, 21h11   #1
sanzo1988
Invité de passage
 
Inscription : mai 2012
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 4
Points : 3
Points : 3
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 :
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 :
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 !!
sanzo1988 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/06/2012, 11h45   #2
diablerouge2000
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : avril 2009
Messages : 49
Détails du profil
Informations personnelles :
Sexe : Homme

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

Informations forums :
Inscription : avril 2009
Messages : 49
Points : 47
Points : 47
Essaye d'utiliser un get au lieu de post dans la balise<form>
diablerouge2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2012, 17h56   #3
pagez
Candidat au titre de Membre du Club
 
Inscription : avril 2004
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 23
Points : 13
Points : 13
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.
pagez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2012, 18h39   #4
sanzo1988
Invité de passage
 
Inscription : mai 2012
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 4
Points : 3
Points : 3
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 !
sanzo1988 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2012, 04h59   #5
diablerouge2000
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : avril 2009
Messages : 49
Détails du profil
Informations personnelles :
Sexe : Homme

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

Informations forums :
Inscription : avril 2009
Messages : 49
Points : 47
Points : 47
Svp n'oubliez pas de marquer la discussion comme résolu.
Merci
diablerouge2000 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 10/11/2012, 20h53   #6
redabochra
Invité de passage
 
Inscription : janvier 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 2
Points : 3
Points : 3
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 :
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 :
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 !!
redabochra est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h55.


 
 
 
 
Partenaires

Hébergement Web