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
39public 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 :
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>
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>
Merci beaucoup de votre aide !!
Partager