Impossibilité d'injecter le paramètre d'un formulaire dans un Java Bean
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 :
Code:
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> |
2) La bean Usager :
Code:
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:
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 :
Code:
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> |
Lorsque l'on exécute le projet, l'on obtient :
Code:
1 2
| [Valider] La javaBean «usager» a été récupérée de la session.
Champ = null |
Conclusion : le paramètre de la requête n'est pas injecté dans la bean.
Qu'ai-je oublié pour qu'un projet aussi simple ne fonctionne pas?
Merci à l'avance.