Voir directement à partir de ce post.
Voir directement à partir de ce post.
<%
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <% // Récupération du message d'erreur String erreur = (String) request.getAttribute("message"); // Affichage du message s'il existe if (erreur != null) { %> <strong>Erreur : </strong> <% } %>
Tu es sur de passer dans le doPost() et pas dans le doGet()??
Je suis tenté de dire oui, mais étant débutant je garde une réserve
J'ai fait quelques changements, voici le code :
creerClient.jsp :
A laquelle on accède par la servlet createUser :
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 <%@ page pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Création d'un client</title> <link type="text/css" rel="stylesheet" href="inc/style.css"/> </head> <body> <div> <form method="post" action="/suplink/showUser"> <fieldset> <legend>Register</legend> <label for="emailUser">Email <span class="requis">*</span></label> <input type="email" id="emailUser" name="emailUser" value="" size="20" maxlength="20" /> <br /> <label for="passwordUser">Mot de Passe </label> <input type="password" id="passwordUser" name="passwordUser" value="" size="20" maxlength="20" /> <br /> </fieldset> <input type="submit" value="Valider" /> <input type="reset" value="Remettre à zéro" /> <br/> </form> </div> </body> </html>
L'envoi du formulaire (donc en doPost() ) mène à showUser.jsp :
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
42
43
44
45
46
47
48
49
50
51
52
53 package com.suplink.servlets; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.suplink.beans.User; public class CreateUser extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; @Override public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String email = request.getParameter("emailUser"); String password = request.getParameter("password"); String message; if ( email.trim().isEmpty() || password.trim().isEmpty() ) { message = "Erreur - Vous n'avez pas rempli tous les champs obligatoires. <br> <a href=\"creerClient.jsp\">Cliquez ici</a> pour accéder au formulaire de création d'un client."; } else { message = "Utilisateur créé avec succès !"; } User user = new User(); user.setEmail(email); request.setAttribute( "user", user ); request.setAttribute( "message", message ); this.getServletContext().getRequestDispatcher("/showUser" ).forward( request, response ); } @Override public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.getServletContext().getRequestDispatcher("/creerClient.jsp" ).forward( request, response ); } }
A laquelle on accède par la servlet showUser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <%@ page pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Affichage d'un client</title> <link type="text/css" rel="stylesheet" href="inc/style.css" /> </head> <body> <p>${erreur}</p> <p>Email : ${ param.emailUser } </p> </body> </html>
Voilà, j'ai un peu l'impression de m'embrouiller mais j'ai rien trouvé de mieux. Et comme ça ça ne fonctionne toujours pas.
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 package com.suplink.servlets; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ShowUser extends HttpServlet { @Override protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String erreur = (String) request.getAttribute("message"); request.setAttribute( "erreur", erreur ); this.getServletContext().getRequestDispatcher("/showUser.jsp" ).forward( request, response ); } }
Personne pour me dire pourquoi je n'arrive pas à récupérer l'attribut ?
en POST tu envoie vers la servelt showUser, qui crée l'attribut message qui redirige vers shwUserp.jsp mais cette dernière n'utilse nulle part l'attribut message.
Seul createUser.jsp utilise message, mais ce dernier est accédé en GET par la servlet CreateUser qui lui ne fait rien dans le GET et n'est jamais accédée en POST.
Non, c'est la servlet CreateUser qui crée l'attribut message, et l'envoie à showUser en POST. Ensuite showUser le recupère et le met dans l'objet erreur, qui est envoyé comme attribut vers showUser.jsp, qui essaie de l'afficher.
Et justement, je me demande bien pourquoi ça ne l'affiche pas, ou si c'est moi qui ne comprends rien :p
Heu non,
Les attributs sont réinitialisé entre chaque requete.
Donc tans ton doPost, message n'existe pas. De même à la requete précédente, tu crée message mais au contraire tu ne l'utilise pas dans la jsp.
Ok, je voyais pas ça comme ça, c'est bien moi qui comprends rien
Et du coup faudrait que je fasse comment là ? Je bloque un peu, désolé![]()
pour passer des informations non critiques d'un formulaire à un autre, le plus simple est de les mettre dans des input hidden.
Pour conserver un état dans ton application, il faut utiliser la session
Partager