Bonjour,
Je tente désespéremment d'injecter automatiquement les paramètres de la requête (champs d'un formulaire) dans un java Bean, au moyen de l'instruction <jsp:setProperty />. Cependant, rien ne fonctionne et le bean est toujours null.
Mon projet fonctionne sous Glassfish 3.1.1 avec Java EE6 et je crois que les changements à EE 6 ont à voir avec mon problème mais je ne sais comment le résoudre...
Voici les 4 fichiers illustrant mon problème, réduits à leur plus simple expression...
1) Une page jsp contenant le formulaire avec un seul champ et les déclaration afin d'y lier la bean usager :
2) La bean Usager :
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 <%@page contentType="text/html" pageEncoding="UTF-8"%> <jsp:useBean id="usager" class="entites.Usager" scope="session" /> <jsp:setProperty name="usager" property="*"/> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Page TEST</title> </head> <body> <h1>Veuillez saisir quelque chose!</h1> <p></p> <form action="Valider" method="post" > <input type="text" name="champ" value="" size="20" /> <button type="submit" value="Valider" name="Valider" >Cliquez ici!</button> </form> </body> </html>
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 package entites; import javax.inject.Inject; public class Usager { private String champ; public String getChamp() {return champ;} public void setChamp(String champ) { this.champ = champ; } }
3) L'extrait de la servlet à qui est transmise le 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 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession laSession = request.getSession(true); Usager usager = (Usager) laSession.getAttribute("usager"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet Valider</title>"); out.println("</head>"); out.println("<body>"); out.println("[Valider] La javaBean «usager» a été récupérée de la session."); out.println("<br/>"); out.println("Champ = " + usager.getChamp()); out.println("</body>"); out.println("</html>"); } finally { out.close(); } }
4) Le descripteur de déploiement :
Lorsque l'on exécute le projet, l'on obtient :
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 <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>Valider</servlet-name> <servlet-class>entites.Valider</servlet-class> </servlet> <servlet-mapping> <servlet-name>Valider</servlet-name> <url-pattern>/Valider</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app>
Conclusion : le paramètre de la requête n'est pas injecté dans la bean.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [Valider] La javaBean «usager» a été récupérée de la session. Champ = null
Qu'ai-je oublié pour qu'un projet aussi simple ne fonctionne pas?
Merci à l'avance.
Partager