IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Erreur JSP For Each


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Points : 126
    Points
    126
    Par défaut Erreur JSP For Each
    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 :

    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 &lt;forEach&gt;
    	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 &lt;forEach&gt;
    	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 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
    <%@ 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>&nbsp;</p>
            </fieldset>
            <p>&nbsp;</p>
            <h2>&nbsp;</h2>
          <!-- fin de #mainContent --></div>
          <div id="footer">
            <p>&nbsp;</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>
    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
    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 );
    	}
     
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Points : 533
    Points
    533
    Par défaut
    bonjour,

    dans ta servlet, tu indiques avec cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ATT_VENTE_ARTICLE = "code_magasin_article";
    que tu utilisera code_magasin_article comme référence à la liste dans ta jsp

    il faut donc dans ta jsp utiliser code_magasin_article et non ATT_VENTE_ARTICLE qui n'existe que dans la servlet.

    remplace dans la jsp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <c:forEach var="resultatCodeMagasinArticle" items="${requestScope['ATT_VENTE_ARTICLE']}">
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <c:forEach var="resultatCodeMagasinArticle" items="${code_magasin_article}">
    le requestScope n'est pas indispensable car c'est le scope par défaut

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Points : 126
    Points
    126
    Par défaut
    j'ai fais ce que tu m'as dit, mais du coup ça ne marche plus du tout, j'ai rien qui est chargé dans mes menu déroulants suite à cette modif.

    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
      <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="${code_magasin_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="${mail_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>

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Points : 533
    Points
    533
    Par défaut
    bonjour,

    effectivement, il y a une seconde erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    request.setAttribute("ATT_VENTE_ARTICLE", venteArticle);
    request.setAttribute("ATT_VENTE_CLIENT", venteClient);
    en mettant des guillemets tu définies effectivement comme variable de ta jsp ATT_VENTE_ARTICLE mais dans ce cas la ligne suivante ne sert à rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public static final String ATT_VENTE_ARTICLE = "code_magasin_article";
    il faut donc remplacer les 2 premières lignes par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    request.setAttribute(ATT_VENTE_ARTICLE, venteArticle);
    request.setAttribute(ATT_VENTE_CLIENT, venteClient);
    pareil pour ta seconde boucle forEach avec client

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Points : 126
    Points
    126
    Par défaut
    je te remercie, j'avais fait plusieurs fois la même erreur mais j'ai bien comprit cette fois. ;-)

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/08/2014, 08h14
  2. Boucle xsl:for-each provoque une erreur
    Par Max1000p dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 05/06/2012, 17h41
  3. [XL-2003] Erreur 1004 sur boucle For each
    Par JonSnow dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/04/2010, 13h22
  4. [VBA-E]For each Cel in Plage, une erreur franchement bête...
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/02/2007, 12h16
  5. [VBA-E] erreur boucle for each
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2006, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo