Bonjour,
je fais un foreach dans une jsp qui prends pour value, un id récupéré dans une base de donnée MYSQL. Je vois bien ma list dans mon menu déroulant, lorsque je valide les bonnes données vont bien dans ma base de donnée via un Insert.
Mais j'ai une erreur qui se produit par rapport à mon foreach est je ne comprends pas pourquoi, vue que c'est bien d'un arrayList dont il sagit au niveau de la variable que je parcours dans mon foreach.
Je vous montre les parties de code concerné. Merci d'avance pour votre aide.
Mon erreur :
Ma page JSP, "ajoutVente.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
54
55
56
57
58
59
60
61
62
63
64
65 type Rapport d''exception message An exception occurred processing JSP page /WEB-INF/ajoutVente.jsp at line 30 description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête. exception org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/ajoutVente.jsp at line 30 27: <label for="code_magasin_article">code magasin article<em style="color: red">*</em></label> 28: <select name="code_magasin_article" id="code_magasin_article" tabindex="1"> 29: <option value="0">Aucun</option> 30: <c:forEach var="resultatCodeMagasinArticle" items="${requestScope['ATT_VENTE_ARTICLE']}"> 31: <option value="${resultatCodeMagasinArticle.id_article}">${resultatCodeMagasinArticle.code_magasin_article}</option> 32: </c:forEach> 33: </select> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) fr.xxx.servlet.Ajouter_vente.doPost(Ajouter_vente.java:89) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) cause mère javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach> org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841) org.apache.jsp.WEB_002dINF.ajoutVente_jsp._jspService(ajoutVente_jsp.java:153) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) fr.xxx.servlet.Ajouter_vente.doPost(Ajouter_vente.java:89) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) cause mère javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach> org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:274) org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:238) org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:155) javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:256) org.apache.jsp.WEB_002dINF.ajoutVente_jsp._jspx_meth_c_005fforEach_005f0(ajoutVente_jsp.java:229) org.apache.jsp.WEB_002dINF.ajoutVente_jsp._jspService(ajoutVente_jsp.java:107) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) fr.xxx.servlet.Ajouter_vente.doPost(Ajouter_vente.java:89) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Ma ServLet "Ajouter_vente.java" qui précède ma page jsp (propre à MVC...)
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
54
55
56
57
58
59
60
61
62 <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Ajout Vente</title> <c:import url="style.jsp"></c:import> </head> <body class="oneColFixCtrHdr"> <div id="container"> <div id="header"> <h1><img src="images/bandeau.png" width="756" height="169" /></h1> <!-- fin de #header --></div> <div id="mainContent"> <c:import url="menu.jsp"></c:import> <fieldset> <legend>Ajout vente</legend> <form id="formVente" name="formVente" method="post" action="ajouter_vente"> <label for="date_vente">date de vente<em style="color: red">*</em></label> <input type="text" name="date_vente" id="date_vente" tabindex="0" /> <p>${formVente.erreurs['date_vente']}</p> <label for="code_magasin_article">code magasin article<em style="color: red">*</em></label> <select name="code_magasin_article" id="code_magasin_article" tabindex="1"> <option value="0">Aucun</option> <c:forEach var="resultatCodeMagasinArticle" items="${requestScope['ATT_VENTE_ARTICLE']}"> <option value="${resultatCodeMagasinArticle.id_article}">${resultatCodeMagasinArticle.code_magasin_article}</option> </c:forEach> </select> <p>${formVente.erreurs['code_magasin_article']}</p> <label for="mail_client">mail client<em style="color: red">*</em></label> <select name="mail_client" id="mail_client" tabindex="2"> <option value="0">Aucun</option> <c:forEach var="resultatMailClient" items="${requestScope['ATT_VENTE_CLIENT']}"> <option value="${resultatMailClient.id_client}">${resultatMailClient.mail_client}</option> </c:forEach> </select> <p>${formVente.erreurs['mail_client']}</p> <label for="enregistrer_vente"></label> <input type="submit" name="enregistrer_vente" id="enregistrer_vente" value="Vendre" tabindex="3" /> <p>${formVente.resultat}</p> </form> <p> </p> </fieldset> <p> </p> <h2> </h2> <!-- fin de #mainContent --></div> <div id="footer"> <p> </p> <!-- fin de #footer --></div> <!-- fin de #container --></div> <script type="text/javascript"> <!-- var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"}); //--> </script> </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
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 package fr.xxx.servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import fr.xxx.bean.Article; import fr.xxx.bean.Client; import fr.xxx.bean.Vente; import fr.xxx.dao.ArticleDao; import fr.xxx.dao.ClientDao; import fr.xxx.dao.DAOFactory; import fr.xxx.dao.VenteDao; import fr.xxx.form.VenteAjoutForm; /** * Servlet implementation class Ajouter_vente */ public class Ajouter_vente extends HttpServlet { private static final long serialVersionUID = 1L; public static final String CONF_DAO_FACTORY = "daofactory"; public static final String ATT_VENTE_CLIENT = "mail_client"; public static final String ATT_VENTE_ARTICLE = "code_magasin_article"; public static final String ATT_FORM = "formVente"; public static final String VUE = "/WEB-INF/ajoutVente.jsp"; /** * @see HttpServlet#HttpServlet() */ public Ajouter_vente() { super(); // TODO Auto-generated constructor stub } private VenteDao venteDao; private ArticleDao articleDao; private ClientDao clientDao; public void init() throws ServletException { /* Récupération d'une instance des DAOs */ this.venteDao = ( (DAOFactory) getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getVenteDao(); this.articleDao = ( (DAOFactory) getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getArticleDao(); this.clientDao = ( (DAOFactory) getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getClientDao(); } public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { //recuperation du formulaire VenteAjoutForm formVenteArticle = new VenteAjoutForm(articleDao); VenteAjoutForm formVenteClient = new VenteAjoutForm(clientDao); //execution de la requete de chargement du contenu du menu List <Article> venteArticle = formVenteArticle.chargementVenteArticle(request); List <Client> venteClient = formVenteClient.chargementVenteClient(request); //assignement de la valeur a l attribut dans la request request.setAttribute("ATT_VENTE_ARTICLE", venteArticle); request.setAttribute("ATT_VENTE_CLIENT", venteClient); /* Affichage de la page d'inscription */ this.getServletContext().getRequestDispatcher( VUE ).forward( request, response ); } public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { //recuperation du formulaire VenteAjoutForm formVenteArticle = new VenteAjoutForm(articleDao); VenteAjoutForm formVente = new VenteAjoutForm( venteDao ); VenteAjoutForm formVenteClient = new VenteAjoutForm(clientDao); List <Article> venteArticle = formVenteArticle.chargementVenteArticle(request); List <Client> venteClient = formVenteClient.chargementVenteClient(request); /* Traitement de la requête et récupération du bean en résultant */ Vente vente = formVente.ajouterVente( request ); /* Stockage du formulaire et du bean dans l'objet request */ request.setAttribute("ATT_VENTE_ARTICLE", venteArticle); request.setAttribute("ATT_VENTE_CLIENT", venteClient); request.setAttribute("ATT_VENTE_ARTICLE", vente); request.setAttribute( "ATT_FORM", formVente ); this.getServletContext().getRequestDispatcher( VUE ).forward( request, response ); } }
Partager