Bonjour à tous,
J'ai un problème de stockage d'une date fraichement créée dans une map dont voici la structure à l'initialisation dans le filtre:
Comme vous pouvez le constater cette map contient les enregistrements du bean date dont voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if(session.getAttribute(dateSession) == null){ List<date> listedates = DateDao.ListeDesDates(); Map<Date,date> mapDate = new HashMap<Date,date>(); for(date dat : listedates){ mapDate.put(dat.getDate(), dat); } session.setAttribute("Dates", mapDate); }
Au fait, lorsque j'ajoute une date dans la table date et en cliquant sur le lien qui affiche la liste des dates enregistrées j'ai l'erreur suivante :
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 package LesObjets; import java.sql.Date; public class date { private Date date; public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } }
Donc j'ai pu deduire que l'itération de la map dans la jsp ne trouve pas le nouveau enregistrement dans le bean.
Voici comment je stocke le nouveau enregistrement dans la map :
Voici le code de la méthode infoDate :
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 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DateMetier dateMetier = new DateMetier(daoDate); java.util.Date dat1 = dateMetier.infoDate(request); /*Je pense que c'est ici ma première erreur car je dois normalement instancier mon bean date comme ça "date dat = dateMetier.infoDate(request)" mais eclipse m'impose de faire "java.util.Date dat1 = dateMetier.infoDate(request);" et de declarer la méthode "infoDate" de type Date et non date(qui est le nom de mon bean).*/ request.setAttribute(dateCons, dat1); request.setAttribute(dateMetierCons, dateMetier); if(dateMetier.getErreurs().isEmpty()){ HttpSession session = request.getSession(); Map<Date,date> Dates = (HashMap<Date, date>) session.getAttribute("Dates"); if(Dates == null){ Dates = new HashMap<Date,date>(); } Dates.put((Date) dat1, dat);/*Et je pense que c'est ici ma deuxième erreur car normalement je dois faire Dates.put(dat.getDate(), dat) ; mais en faisant ça je remarque qu'eclipse me souligne "getDate" en rouge.Pour ce qui est de cette deuxième erreur je me dis qu'elle découle de la première car j'ai pas pu instancier mon bean comme il se doit; c'est-à-dire faire "date dat = dateMetier.infoDate(request)".*/ session.setAttribute(dateMapCons, Dates); }
Voici comment je fais l'affichage dans la 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 public Date infoDate(HttpServletRequest request){ String dat = getValeurSaisie(request,dateCons); SimpleDateFormat conversion = new SimpleDateFormat(formatDate); java.util.Date data = null; try { data = conversion.parse(dat); } catch (ParseException e) { e.printStackTrace(); } java.sql.Date maDate = new java.sql.Date(data.getTime()); date da = new date(); traitementDate(maDate,da); try{ if(erreurs.isEmpty()){ daoDate.EnregistrerDate(maDate); resultat = "Date bien inserée."; }else{ resultat = "Date non inserée."; } }catch(DAOException d){ setErreurs( "imprévu", "Erreur imprévue lors de la création." ); resultat = "Échec de la création de la commande : une erreur imprévue est survenue, merci de réessayer dans quelques instants."; d.printStackTrace(); } return maDate; }
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 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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=UTF-8"> <title>Insert title here</title> </head> <body> <c:choose> <c:when test = "${empty sessionScope.Dates}"> <c:out value = "Aucune date enregistrée."/> </c:when> <c:otherwise> <table border="1"> <tr> <td>Date</td> <td colspan = "2">Action</td> </tr> <c:forEach items = "${sessionScope.Dates}" var = "mapDate"> <tr> <td><c:out value = "${mapDate.value.date}"/></td> <td><a href = "<c:url value = "/supprimerDate"><c:param name = "date" value = "${mapDate.key}"/></c:url>"><img src = "Image/sup.png" alt = "Supprimer" title = "Supprimer"/></a></td> <td><a href = "<c:url value = "/modifierDate"><c:param name = "date" value = "${mapDate.key}"/></c:url>"><img src = "Image/modif.png" alt = "Modifier" title = "Modifier"/></a></td> </tr> </c:forEach> </table> </c:otherwise> </c:choose> <!--<c:out value = "${sessionScope.dates}"/> <c:out value = "${sessionScope.session}"/>--> </body> </html>
A mon avis si je parviens à bien instancier mon bean date (c'est-à-dire faire "date dat = dateMetier.infoDate(request)".) le problème sera sans doute résolu
Merci d'avance!!!
Partager