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 :

logic:iterate imbriques + html:text [FAQ]


Sujet :

Struts 1 Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut logic:iterate imbriques + html:text
    Bonjour, je voudrais savoir si il est possible de gérer 2 logic:iterate imbriqués avec un html:text à l'interieur.

    Pour l'affichage avec les valeurs par défaut, je n'ai aucun problème. Mais il m'est impossible de récupérer mes valeurs. Quelqu'un aurait-il un exemple.

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Points : 310
    Points
    310
    Par défaut
    Salut,

    Pourrais-tu faire voir ton code (les iterate + le formulaire) ?

    Tu peux aussi aller voir du côté de l'attribut indexed du tag <html:text /> je pense.

  3. #3
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Tu as un exemple dans cette discussion.

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Benouze Salut,

    Pourrais-tu faire voir ton code (les iterate + le formulaire) ?

    Tu peux aussi aller voir du côté de l'attribut indexed du tag <html:text /> je pense.
    Le "indexed" est à true.
    J'ai déja utilisé cela mais avec une seule itération...et ça fonctionnait très bien.

    Tu as un exemple dans cette discussion.
    Pour la discussion à laquelle tu me renvoies, ça ne m'avance à rien car ça, je l'ai déja fait.
    Comme je le dis, l'affichage fonctionne correctement,mais je ne récupère pas mes données

    Je rajoute le code dans la journée pour plus d'informations...

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Voila la partie de ma 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
     
    			<logic:iterate name="Simul" indexId="indexLigne" id="ligneOuvert" 
    				property="listeLigneOuvert">
    				 <tr>
    					 	<td class="titreTableau">
    					 	De <bean:write name="ligneOuvert" property="lignede"/>
    					 	</td>
    				 	<logic:iterate name="ligneOuvert" indexId="index" id="disparateForm" 
    				 	property="listeDisparates" >
    					 	<td>
    							<table class='sansbordures'>
    							<tr><td>Taux mini : <html:text name="disparateForm" property="txMini" size="5"  indexed="true" /></td></tr>
    							</table>
    					 	</td>				 	
    				 	</logic:iterate>
    				</tr>
    			</logic:iterate>
    Mon Bean Simul :
    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
     
    	public DisparateForm getListeDisparates(int i)
    	{
            while(listeDisparates.size() <= i){
                listeDisparates.add(new DisparateForm());
            }
    	    return (DisparateForm) ((ArrayList)this.listeDisparates).get(i);
    	}   
    	/**
             * @return Renvoie listeDisparates.
             */
    	public Collection getListeDisparates() {
    		return listeDisparates;
    	}
    	/**
             * @param baremesFiges listeDisparates à définir.
             */
    	public void setListeDisparates(Collection disparates) {
    		listeDisparates = disparates;
    	}
     
     
    		/**
             * @return Renvoie listeLigneOuvert.
             */
    	public Collection getListeLigneOuvert() {
    		return listeLigneOuvert;
    	}
     
    	/**
             * @return Renvoie listeLigneOuvert.
             */
    	public LigneOuvert getListeLigneOuvert(int i) {
    		return (LigneOuvert)((ArrayList)listeLigneOuvert).get(i);
    	}	
    	/**
             * @param ligneOuvert listeLigneOuvert à définir.
             */
    	public void setListeLigneOuvert(Collection ligneOuvert) {
    		listeLigneOuvert = ligneOuvert;
    	}
     
        public LigneBaremeOuvert getLigneBaremeOuvert(int i)
        {
            while(listeLigneOuvert.size() <= i){
                listeLigneOuvert.add(new LigneOuvert());
            }
            return (LigneOuvert) ((ArrayList)this.listeLigneOuvert).get(i);
        }
     
        public void setLigneBaremeOuvert(int i,LigneOuvert ligne)
        {
           ((ArrayList)this.listeLigneOuvert).set(i,ligne) ;
        }
    Dans mon Bean LigneOuvert

    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
     
        public DisparateForm getDisparateForm(int i)
        {
            while(listeDisparates.size() <= i){
                this.listeDisparates.add(new DisparateForm());
            }
            return (DisparateForm) ((ArrayList)this.listeDisparates).get(i);
        }
     
        public void setDisparateForm(int i,DisparateForm ligne)
        {
            while(listeDisparates.size() <= i){
                this.listeDisparates.add(new DisparateForm());
            }
           ((ArrayList)this.listeDisparates).set(i,ligne) ;
        }
     
    	/**
             * @return Renvoie listeDisparates.
             */
    	public Collection getListeDisparates() {
    		if (listeDisparates==null) {
    			listeDisparates = new ArrayList();
    		}
    		return listeDisparates;
    	}
    	/**
             * @param baremesFiges listeDisparates à définir.
             */
    	public void setListeDisparates(Collection Disparates) {
    		listeDisparates = Disparates;
    	}
    Les getters et setters pour les attributs de base ont volontairement été retiré du code car ils n'ont aucune incidence.

  6. #6
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Citation Envoyé par wanted972 Voir le message
    Pour la discussion à laquelle tu me renvoies, ça ne m'avance à rien car ça, je l'ai déja fait.
    Comme je le dis, l'affichage fonctionne correctement,mais je ne récupère pas mes données
    Désolée, j'avais mal lu.

    Petite question : ton bean Simul est-il un form-bean ?

    Si ce n'est pas le cas, il faudrait définir la collection listeLigneOuvert comme propriété du form-bean avec getter et setter et l'initialiser dans l'Action qui s'exécute avant l'affichage du formulaire.

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Petite question : ton bean Simul est-il un form-bean ?

    Si ce n'est pas le cas, il faudrait définir la collection listeLigneOuvert comme propriété du form-bean avec getter et setter et l'initialiser dans l'Action qui s'exécute avant l'affichage du formulaire.
    Mon bean Simul est mon ActionForm et la collection listeLigneOuvert est définie comme attribut dans cet ActionForm avec ses getters et setters (je les ai peut être oubliés dans ma partie de code citée précédemment) .

    De plus, il est initialisé comme je le veux, d'où l'affichage qui s'effectue correctement.

    Mais c'est ensuite, pour récupérer les valeurs que ça coince...

  8. #8
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Peux-tu essayer ceci :
    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
    <logic:iterate name="Simul" indexId="indexLigne" id="ligneOuvert" property="listeLigneOuvert">
     <tr>
    	<td class="titreTableau">
     	De <bean:write name="ligneOuvert" property="lignede"/>
     	</td>
     	<logic:iterate name="ligneOuvert" indexId="index" id="disparateForm" property="listeDisparates" >
     	<td>
    	<table class='sansbordures'>
    	<tr>
                 <td>Taux mini :
                    <html:text name="Simul" property="ligneOuvert[${indexLigne}].disparateForm[${index}].txMini" size="5"/>
                 </td>
            </tr>
    	</table>
     	</td>				 	
    	</logic:iterate>
    </tr>
    </logic:iterate>
    pour que ceci fonctionne, il faut avoir coder :

    dans l'ActionForm Simul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public LigneOuvert getLigneOuvert(int i)
    {
    	return (LigneOuvert) this.listeLigneOuvert.get(i);
    }
    public void setLigneOuvert(int i,LigneOuvert ligneOuvert)
    {
    	this.listeLigneOuvert.set(i,ligneOuvert) ;
    }
    dans la classe LigneOuvert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public DisparateForm getDisparateForm(int i)
    {
    	return (DisparateForm) this.listeDisparates.get(i);
    }
    public void setDisparateForm(int i,DisparateForm disparateForm)
    {
    	this.listeDisparates.set(i,disparateForm) ;
    }
    Le tag html:text avec les EL fonctionne si tu es en J2EE 1.4 (Servlet 2.4,JSP 2.0).
    Sinon, il faut ajouter dans la jsp la directive taglib qui pointe sur la tld struts-html-el.tld et modifier le tag <html:text> en <html-el:text>.

  9. #9
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Il existe aussi une autre solution avec les tags nested :
    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
    <nested:iterate property="listeLigneOuvert">
     <tr>
    	<td class="titreTableau">
     	De <nested:write property="lignede"/>
     	</td>
     	<nested:iterate property="listeDisparates">
     	<td>
    	<table class='sansbordures'>
    	<tr>
                 <td>Taux mini :
                    <nested:text property="txMini"/>
                 </td>
            </tr>
    	</table>
     	</td>				 	
    	</nested:iterate>
    </tr>
    </nested:iterate>
    A tester.

  10. #10
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Ok, c'est cool ça fonctionne parfaitement...j'y ai pensé aussi mais j'avais oublié de retirer le 'indexed=true'

    Au fait c'est la 1e solution qui fonctionne avec les EL

    Pour la 2e, je n'ai pas encore essayé...mais c'est à tester


    Merci

  11. #11
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    De rien.

    Normalement, ça devrait fonctionner avec les tags nested.
    L'avantage, c'est que le code de la jsp est grandement simplifié.
    Et en principe, dans un cas simple sans iterate imbriqués, il faut savoir qu'avec les tags nested, il n'est pas utile de coder getters et setters sur objets indexés.
    Par contre, dans un cas d'iterate imbriqués comme le tien, je pense que tu es obligé de les coder.

    Sinon, si tout est ok, n'oublie pas le tag

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/02/2010, 19h55
  2. html:text dans un logic:iterate
    Par ptitom1381 dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/11/2008, 13h11
  3. logic:iterate et html:select
    Par Alec6 dans le forum Struts 1
    Réponses: 1
    Dernier message: 21/07/2008, 22h04
  4. logic:iterate imbriqués + html:image
    Par jayrosam dans le forum Struts 1
    Réponses: 2
    Dernier message: 10/12/2007, 17h37
  5. iteration de html:text et récup value
    Par mnemonic78 dans le forum Struts 1
    Réponses: 33
    Dernier message: 27/07/2007, 09h33

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