Bonjour dans le cadre d'une mini application MVC , je rencontre un problème pour passer des données du modèle à la vue.
Tout d'abord , j'ai un bean Personne:
Jusque là rien d'extra ordinaire.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 package mywebapp.bean; public class Personne { private String nom; private String prenom; public Personne() { this.nom = "nom par defaut"; this.prenom = "prenom par defaut"; } public void setNom (String nom) { this.nom = nom; } public String getNom() { return (this.nom); } public void setPrenom (String prenom) { this.prenom = prenom; } public String getPrenom () { return (this.prenom); } }
Ensuite , j'ai un modèle:
et enfin la vue associéeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class ConsulterAction implements Action { public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Créer votre bean Utilisateur utilisateur = new Utilisateur(); utilisateur.setNom("Desreumaux"); utilisateur.setPrenom("Rémi"); utilisateur.setDateDeNaissance("02/04/1985"); // TODO Ajouter votre bean à la request req.setAttribute("utilisateur", utilisateur); } }
et mon controllerCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import ="mywebapp.bean.Utilisateur" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Consulter Utilisateur</title> </head> <body> <h1>Consulter utilisateur </h1> <%Utilisateur personne = (Utilisateur)request.getAttribute("utilisateur"); %> <% if(personne != null) { %> <p>nom = <%= personne.getNom() %></p> <p>prenom = <%= personne.getPrenom() %></p> <p>date de naissance = <%= personne.getDateDeNaissance() %></p> <%} %> </body> </html>
Le problème est que personne est toujours null alors qu'il devrait être égal à l'objet utilisateur.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
42
43
44
45
46
47
48
49
50
51
52 package mywebapp.servlet; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import mywebapp.action.ActionValue; import mywebapp.action.ConsulterAction; import mywebapp.action.ListerAction; public class ControllerMVC2 extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Map<String, ActionValue> mapController = new HashMap<String, ActionValue>(); // Initialisation des différentes actions et page de retour ActionValue actionAccueil = new ActionValue(null, req.getContextPath() + "/jsp/accueil.jsp"); mapController.put("accueil", actionAccueil); ActionValue actionLister = new ActionValue(new ListerAction(), req.getContextPath() + "/jsp/lister.jsp"); mapController.put("lister", actionLister); ActionValue actionConsulter = new ActionValue(new ConsulterAction(), req.getContextPath() + "/jsp/consulter.jsp"); mapController.put("consulter", actionConsulter); // On récupère le nom de l'action String actionName = req.getParameter("actionName"); ActionValue actionValue = mapController.get(actionName); // Si une action existe, il faut alors l'éxécuter if (actionValue.getAction() != null) { actionValue.getAction().execute(req, resp); } // Il faut maintenant rediriger vers la page souhaitée resp.sendRedirect(actionValue.getReturnPage()); } }
Comment faire?
merci