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

Struts 1 Java Discussion :

[struts]Cannot create iterator for this collection


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Points : 26
    Points
    26
    Par défaut [struts]Cannot create iterator for this collection
    bjr tt le monde.
    je veu afficher les élements du champ "lib_ville" de la table "ville" ds une liste déroulante avec le code suivant:

    code :


    <%@ page language="java"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>

    <html>
    <head>
    <title>Add a ville</title>
    </head>
    <body>
    <%@ include file="/jsp/ressources/header.jsp" %>
    <%-- create a html form --%>
    <html:form action="villeEdit">
    <%-- print out the form data --%>
    <table border="1">
    <tbody>
    <tr>
    <td>id ville:</td>
    <td><html:text property="id_ville" /></td>
    </tr>
    <tr>
    <td>lib ville:</td>
    <td><html:text property="lib_ville" /></td>
    </tr>
    </tbody>
    </table>
    <%-- set the parameter for the dispatch action --%>
    <html:hidden property="do" value="saveville" />

    <select name="ville">
    <logic:iterate name="villeEditForm" property="villeView" id="ville" >
    <option value='<bean:write name="ville" property="lib_ville"/>'></option>
    </logic:iterate>
    </select>
    <br>
    <%-- submit and back button --%>
    <html:button property="back"
    onclick="history.back();">
    Back
    </html:button>
    &nbsp;
    <html:submit>Save</html:submit>
    </html:form>

    <%@ include file="/jsp/ressources/footer.jsp" %>
    </body>
    </html>


    mais un message d'erreur sui s'affiche :

    javax.servlet.ServletException: Cannot create iterator for this collection
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.jsp.province_002dville.ville.villeAdd_jsp._jspService(villeAdd_jsp.java:234)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)



    et merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    quelques pistes pour résoudre ton problème:
    - vérifie que villeView est bien un tableau, une collection etc..
    - vérifie qu'il n'est pas vide (logic:notEmpty)
    - essaie de mettre un attribut "type" au tag logic:iterate
    - va voir du coté de struts http://struts.apache.org/struts-doc-1.2.7/userGuide/struts-logic.html#iterate

    En espérant que ça t'aidera

  3. #3
    Membre régulier Avatar de dedeloux
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 104
    Points : 75
    Points
    75
    Par défaut
    Salut, je ne sais pas si le problème vient de là mais ton attribut name dans ta balise bean:write doit correspondre au bean de formumaire associé à ta page pour pouvoir retrouver la propriété donc dans :

    <option value='<bean:write name="ville" property="lib_ville"/>'></option>
    Essaye de remplacer name="ville" par le nom de ton bean de formulaire (peut etre villeEditForm).

    [/code]

  4. #4
    Membre régulier Avatar de dedeloux
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 104
    Points : 75
    Points
    75
    Par défaut
    J'avais pas bie regarder ce que tu faisais et je viens de comprendre !!!
    Jene pense que tu puisses faire un logic:iterate dans une balise select.

    Il te faut plutot utiliser une <htlm:optionsCollection> ou <html:options> du tagLib html . Il faut aussi comme l'as dit sgourio que tu vérifies que ta propriété lib_ville est bien de type List.
    Ca donnerait quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:select name="ville" property="nom_ville">
       <html:optionsCollection name="ville" property="lib_ville"  label="nom"  value="code"/>
    </html:select>
    En faisant attention à :
    ville : nom du bean de formulaire associé à ta page
    nom_ville : propriété de type String du bean ville dans laquelle tu récpèreras la valeur sélectionnée dans ta liste
    lib_ville : propriété de type List
    nom: valeur affichée dans ta liste déroulante
    code : valeur que renverra ta liste.

    Je ne sais pas si j'ai été très claire mais pour plus d'info tu peux toujours te renseigner sur la balise html:select ou html:optionsCollection. Autant utiliser Struts à fond !!

    Bon courage

Discussions similaires

  1. Cannot create iterator for this collection
    Par nander dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 22/03/2010, 12h25
  2. [Struts] Cannot retrieve definition for form bean
    Par Diablo_22 dans le forum Struts 1
    Réponses: 2
    Dernier message: 10/09/2009, 12h24
  3. Réponses: 5
    Dernier message: 03/07/2007, 14h06
  4. Réponses: 7
    Dernier message: 10/09/2006, 11h58
  5. [Struts] <logic:iterate> sur une collection d objets c
    Par trax020 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/05/2005, 00h11

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