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 :

optionsCollection : Failed to obtain specified collection


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 210
    Par défaut optionsCollection : Failed to obtain specified collection
    Bonjour
    j'éssaie d'initialiser une optionsCollection à l'affichages de ma page (sans poster le formulaire).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:select property="magasins" size="2" multiple="true" >
    <html:optionsCollection property="magasins"/>
    </html:select>
    mon bean formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public Collection getMagasins() {
      return (this.magasins);
    }
     
    public void setMagasins(Collection magasins) {
      this.magasins = magasins;
    }
    et mon action : (pas très propre pour le moment mais c'est pour tester)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    LabelValueBean test0 = new LabelValueBean("carrefour", "carouf");
    LabelValueBean test1 = new LabelValueBean("cora", "cor");
    LabelValueBean test2 = new LabelValueBean("ikea", "ik");
    Collection magasinsz = new ArrayList();
    magasinsz.add(test0);
    magasinsz.add(test1);
    magasinsz.add(test2);
    lForm.setMagasins(magasinsz);
    et voici l'erreur que j'obtiens :

    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
     
    org.apache.jasper.JasperException: Exception in JSP: /vues/courses/courses_saisie.jsp:65
     
    62: 				      <td><bean:message key="lorem.courses.jsp.saisie.magasins.message"/></td>
    63: 					  <td>
    64: 					    <html:select property="magasins" size="2" multiple="true" >
    65:                           <html:optionsCollection property="magasins"/>
    66:                         </html:select>
    67:                       </td>
    68: 					  <td>&nbsp;</td>
     
     
    Stacktrace:
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1014)
    	org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:961)
    	org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:931)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:247)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
     
     
    cause mère 
     
    javax.servlet.ServletException: Failed to obtain specified collection
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    	org.apache.jsp.vues.courses.courses_005fsaisie_jsp._jspService(courses_005fsaisie_jsp.java:259)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1014)
    	org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:961)
    	org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:931)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:247)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
     
     
    cause mère 
     
    javax.servlet.jsp.JspException: Failed to obtain specified collection
    	org.apache.struts.taglib.html.OptionsCollectionTag.doStartTag(OptionsCollectionTag.java:236)
    	org.apache.jsp.vues.courses.courses_005fsaisie_jsp._jspx_meth_html_optionsCollection_0(courses_005fsaisie_jsp.java:669)
    	org.apache.jsp.vues.courses.courses_005fsaisie_jsp._jspx_meth_html_select_0(courses_005fsaisie_jsp.java:640)
    	org.apache.jsp.vues.courses.courses_005fsaisie_jsp._jspx_meth_html_form_0(courses_005fsaisie_jsp.java:472)
    	org.apache.jsp.vues.courses.courses_005fsaisie_jsp._jspx_meth_logic_notPresent_0(courses_005fsaisie_jsp.java:410)
    	org.apache.jsp.vues.courses.courses_005fsaisie_jsp._jspService(courses_005fsaisie_jsp.java:235)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1014)
    	org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:961)
    	org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:931)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:247)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

    si qqn pourrais m'aider

    merci

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Il faut que tu distingues la collection de magasins qui te permet d'initialiser la liste déroulante et la liste des magasins sélectés.

    Tu pourrais faire par exemple ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="selectMagasins" size="2" multiple="true" >
       <html:optionsCollection property="magasins"/>
    </html:select>
    selectMagasins doit être un tableau de String.
    Il faut donc ajouter getter et setter sur selectMagasins dans ton ActionForm.

  3. #3
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Le tag html:select est bien dans un tag html:form ?
    Et tu as bien codé un name="nomDeTonFormBean" dans le mapping de l'Action dans le struts-config.xml ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 210
    Par défaut
    même en les distingant ça reviens au même

  5. #5
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Comment ça ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 210
    Par défaut
    En fait je ne comprends pas trop le but de mettre deux propriétés?
    A quoi correspond la propriété du tag select si on a besoin que de la propriété du <html:optionsCollection ou celui-ci serait lié à une propriété de mon bean formulaire.

  7. #7
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Pour ma part, il me semble logique que tu aies deux propriétés distinctes :

    - la collection contenant tous les magasins, qui permet d'initialiser la liste déroulante (propriété du tag html:optionsCollection)
    - les magasins sélectés par l'utilisateur (propriété du tag html:select).

    De plus, la propriété du tag html:select avec l'option multiple="true" doit être un tableau de String alors que la propriété du html:optionsCollection une collection.
    Je ne vois donc pas comment tu peux faire autrement que de définir deux propriétés dans ton form-bean.

    Pour que ceci fonctionne correctement, le html:select doit être dans un html:form et le nom du form-bean doit être spécifié via l'attribut name dans le mapping de l'Action exécutée au submit du formulaire, dans le struts-config.xml.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/04/2011, 07h59
  2. Réponses: 3
    Dernier message: 25/09/2008, 19h26
  3. Réponses: 1
    Dernier message: 12/11/2007, 15h48
  4. Réponses: 1
    Dernier message: 04/04/2007, 09h17
  5. failed BULK COLLECT
    Par patmaba dans le forum SQL
    Réponses: 7
    Dernier message: 01/06/2004, 12h03

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