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 :

collection via formulaire sous Struts


Sujet :

Struts 1 Java

  1. #41
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Par défaut
    tiens ValidatorActionForm c'est quoi ? ce serait pas de là que viendrait mon pb ? (je met juste un extends ActionForm)

  2. #42
    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
    extends ActionForm, c'est très bien.

    Il se trouve que dans l'exemple, le validator de Struts est utilisé, mais rien ne t'y oblige.
    Il vaut mieux trouver la solution à ton problème actuel.

    Pour moi, il n'est pas nécessaire d'implémenter une méthode reset dans l'ActionForm.

    Si tu en as codé une, qu'as-tu mis dedans ?

  3. #43
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Par défaut
    tout juste tu as complètement raison, c'est d'ailleurs cette méthode reset() (qui en fait existait déjà, l'ActionForm je l'ai repris d'une version précédente du site, en y rajoutant ma collection) qui faisait tout déconner. J'y avais rajouté une ligne ou j'initialisais à vide ma ArrayList. J'ai supprimé cette ligne, mis le FormBean en scope session et maintenant tout marche parfaitement, comme dans un rêve...
    par contre j'ai retesté avec la même configuration ms avec l'actionform en scope request et là ca marche plus, il fait la même erreur qu'avant (indexoutofboundexception)

    BILAN : voici le code source fonctionnel (chez moi en tt cas) pour les gens qui tomberait sur le même pb et souhaiterait utiliser nested:iterate

    le code jsp :

    <nested:iterate property="lstIndicateur">

    <tr>
    <nested:hidden property="nom"/>
    <nested:hidden property="uo"/>
    <nested:hidden property="ind_desc"/>
    <nested:hidden property="type_qtql"/>
    <td width="400" class="Forminput"> <nested:write property="ind_desc"/></td>
    <td width="300" class="Forminput"> <nested:write property="uo"/></td>
    <td width="100" class="Forminput"> <nested:text property="realise" size="10" maxlength="150"/></td>
    </tr>
    </nested:iterate>
    le code de l'ActionForm : (pr l'attribut collection)
    private ArrayList lstIndicateur = new ArrayList();
    public ArrayList getLstIndicateur() {
    return (ArrayList)this.lstIndicateur;
    }


    public Indicateur getLstIndicateur(int i){
    return (Indicateur)lstIndicateur.get(i);
    }
    /**

    */
    public void setLstIndicateur(ArrayList a) {
    this.lstIndicateur = a;
    }
    2 remarques pr l'actionform : accesseur get avec indice ptet pas utile ms ca mange pas de pain, pas besoin de méthode reset()

    enfin le code d'un objet Indicateur (lstIndicateurs = collection d'objets Indicateurs)

    public class Indicateur implements Serializable {

    public Indicateur() {
    super();
    }

    private String idc_tache = null;
    private String nom = null;
    private String ind_desc = null;
    private String type_qtql = null;
    private String uo = null;
    private String realise = null;




    /**
    * @return
    */
    public String getInd_desc() {
    return ind_desc;
    }



    /**
    * @return
    */
    public String getNom() {
    return nom;
    }

    /**
    * @return
    */
    public String getRealise() {
    return realise;
    }



    /**
    * @return
    */
    public String getType_qtql() {
    return type_qtql;
    }



    /**
    * @return
    */
    public String getUo() {
    return uo;
    }


    /**
    * @param string
    */
    public void setInd_desc(String string) {
    ind_desc = string;
    }



    /**
    * @param string
    */
    public void setNom(String string) {
    nom = string;
    }

    /**
    * @param string
    */
    public void setRealise(String string) {
    realise = string;
    }


    /**
    * @param string
    */
    public void setType_qtql(String string) {
    type_qtql = string;
    }


    /**
    * @param string
    */
    public void setUo(String string) {
    uo = string;
    }

    /**
    * @return
    */
    public String getIdc_tache() {
    return idc_tache;
    }

    /**
    * @param string
    */
    public void setIdc_tache(String string) {
    idc_tache = string;
    }

    }
    voilà!
    et rappel : l'ActionForm en scope session sinon ca marche pas

    sinon un grand merci à Benjamin et c_nvy pour m'avoir grandement aidé!

    (et il n'est pas exclu que je revienne ds 5 min avec un nouveau problème )

  4. #44
    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
    C'est cool que ça marche enfin.
    Dommage que tout ne soit pas super clair...

    Pitié, attends Lundi avant de resoumettre un nouveau problème

  5. #45
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    ah ben quand meme ouf il etait dur a regler celui la!!!!! salete de methode reset

  6. #46
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Bonjour,
    j'avais le meme probleme d'utilisation de nested:iterate.
    Merci de votre aide.
    Peut-être qu'on devrait mettre se post dans la FAQ ?

    Mais j'ai un autre probleme.
    Losque je soumets mon formulaire j'ai:
    Citation Envoyé par console
    java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1773)
    at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)
    at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
    at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
    at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1022)
    at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
    at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
    at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
    at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:804)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
    at java.lang.Thread.run(Thread.java:595)
    11:41:48,230 ERROR [[action]] Servlet.service() for servlet action threw exception
    java.lang.IllegalArgumentException: Cannot invoke fr.harmonie.gaweb.presentation.form.devis.GenericDevisForm.setBeneficiaires - ar
    gument type mismatch
    at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778)
    at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)
    at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
    at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
    at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1022)
    at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
    at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
    at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
    at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:804)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
    at java.lang.Thread.run(Thread.java:595)
    J'aimerais savoir si vous ayez eu la meme erreur ? et si vous saviez y resoudre ?

    ci-dessous le code fait:
    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
     
     
    <nested:iterate property="beneficiaires">
    				<tr>
    					<td><input type="checkbox" checked="true"></td>
    					<td><nested:text property="nom"/></td>
    					<td><nested:text property="prenom" /></td>
    					<td><nested:text property="ageTarif"  /></td>
    					<td><nested:text property="dateNaiss" size="8" maxlength="10"/></td>
    					<td>
    						<nested:text property="rang" />
    					</td>
    					<td>
    						<nested:text property="zoneTarif" />
    					</td>
    					<td>
    						<nested:text property="produit" />
    					</td>
    					<td><nested:text property="ald" /></td>
    					<td>
    						<nested:text property="adhTardive"/>
    					</td>
    					<td><nested:text property="adhJeune"/></td>
    					<td class="cotisation"><nested:text property="cotisation" />&nbsp;€</td>
    				</tr>
    			</nested:iterate>
    Form:
    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
     
    public class GammeForm extends ActionForm {
      protected Collection beneficiaires = new ArrayList();
      public Beneficiaire getBeneficiaire(int i) {
            return (Beneficiaire) ((List)this.beneficiaires).get(i);
        } 
      public Collection getBeneficiaires() {
            return this.beneficiaires;
        }
     
      public void setBeneficiaires(Collection beneficiaires) {
            log.info("Bene = " + beneficiaires.getClass());
            this.beneficiaires = beneficiaires;
        }
     
    }
    L'action est une dispatchAction et elle ne fait rien (return null) pour le test.

  7. #47
    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
    java.lang.IllegalArgumentException: Cannot invoke fr.harmonie.gaweb.presentation.form.devis.GenericDevisForm.setBeneficiaires - ar
    gument type mismatch
    Et si tu remplaces Collection par ArrayList dans GammeForm, ça donne quoi ?

    Je pense que tu aurais dû créer un nouveau post pour ton problème.

  8. #48
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Citation Envoyé par c_nvy
    Je pense que tu aurais dû créer un nouveau post pour ton problème.
    Oui mais comme c'etait tres lié au probleme (j'ai commencé par suivre la solution du post).

    En fait j'ai trouvé.
    Mon form hérite en fait d'un autre qui lui contient la collection.
    Et apparemment struts n'aime pas l'heritage sur les form.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Envoi données via formulaire sous wordpress
    Par panda25 dans le forum Langage
    Réponses: 7
    Dernier message: 24/10/2014, 09h14
  2. [XL-2007] Suppression lignes excel via formulaire sous vba
    Par nanousik dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2012, 07h00
  3. Réponses: 6
    Dernier message: 31/03/2010, 00h09
  4. Ouvrir un Formulaire via un sous-formulaire
    Par pouii dans le forum IHM
    Réponses: 8
    Dernier message: 17/04/2008, 15h52
  5. message box via un sous formulaire
    Par fa310428 dans le forum IHM
    Réponses: 8
    Dernier message: 02/10/2007, 14h31

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