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] Problème pour itérer sur un vecteur


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut [Struts] Problème pour itérer sur un vecteur
    Bonjour,

    Le code vaut mieux qu'une longue phrase alors voilà d'abord l'Action qui se charge d'initialiser le bean de formulaire, c'est par lui que j'appelle l'affichage 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
    18
    19
    public class EditerAgentBuilder extends Action {
     
        public ActionForward execute(ActionMapping mapping, ActionForm  form, HttpServletRequest request, HttpServletResponse response) throws Exception {
            EditerAgentForm f = (EditerAgentForm) form;
     
            ArrayList listeDir = new DirectionMetier().getListePourRadio();
            f.setListeDirections(listeDir);
     
            Vector servByDirection = new Vector();
            ServiceMetier serv=new ServiceMetier();
            for (int i=1;i<=9;i++){
                servByDirection.add(serv.getListePourSelect(i));
            }        
            f.setVecteurListesServices(servByDirection);        
     
            return mapping.findForward("afficheForm");
     
        }
    }
    donc le forward vers afficheForm m'affiche cette 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
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <br />
    <h3>Editions des données de l'agent <bean:write name="agent" property="nom"/> <bean:write name="agent" property="prenom"/></h3>
     <logic:iterate id="direction" name="EditerAgentForm" indexId="ind" property="listeDirections">
         <input type="radio" name="directionChoisie" value="<bean:write name="direction" property="value"/>"/><bean:write name="direction" property="label"/>
     
         <html:select property="noServiceChoisi">
             <html:optionsCollection property="vecteurListesServices[ind]" value="value" label="label"/>
         </html:select>
     
         <br />   
     </logic:iterate>
    et voici son bean de formulaire (l'ActionForm) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class EditerAgentForm extends org.apache.struts.action.ActionForm {
     
        private ArrayList listeFonctions;
        private ArrayList listeDirections;
        private String directionChoisie;
        private Vector vecteurListesServices;
    ....
    En fait comme vous le voyez dans l'Action qui initialise le form, d'abord je rempli un ArrayList qui est affiché sous forme de boutons radio (ca ca marche très bien), puis ensuite dans le for je place 9 ArrayList dans un vecteur et ce vecteur je le place dans l'ActionForm également.

    Ensuite dans la jsp, je voudrais, dans le premier iterate, lister tous les boutons radio (ca marche) et ensuite construire un select à partir du ième élement du vecteur, c'est à dire le ième ArrayList.
    J'ai mis "vecteurListesServices[ind]" pour vous faire comprendre, mais c'est évident que ca ne passe pas.

    Mais je n'arrive pas avec les taglibs, à atteindre tel élement du vecteur...

    je suis assez embeté, parce que je ne vois pas comment faire autrement, peut-être avec d'autres tags?

    merci d'avance !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 103
    Points : 86
    Points
    86
    Par défaut
    Je ne sais pas si il ya une balise struts qui fait ca, si il y en a une je suis aussi preneur. J'ai 2 solution a te proposer :
    1 -> bricolage
    tu utilise un logic:iterate sur ton tableau et quand tu arrives sur la valeur que tu veux tu l'enregistres dans une variable
    2-> Plus classe
    Tu te creer un nouveau tag (creation d'une tld) ou tu lui passerais en parametre ton tableau et ton indice et le traitement de ce tag te retournerait l'element de ton tableau

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    qu'appelle tu par "logic iterate sur un tableau" tu parles du vecteur qui contient tous mes arraylist ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    J'ai pensé à un truc que je suis en train d'essayer :

    faire une hashmap avec comme clé le string que je veux afficher en face du radio, et comme valeur une ArrayList que je récupère dans le iterate et que je passe au Select...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 103
    Points : 86
    Points
    86
    Par défaut
    tu parcours ton vecteur (balise <logic:iterate..) qui contient tes arrayList

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    C'est nikel, le coup de la HashMap marche, alors je met mon code pour ceux qui désirent itérer sur une hashmap qui a un String comme clé et un ArrayList contenant des LabelValueBean comme value, cela permet de génerer un nombre aléatoire de select, le tout avec les tags de Struts :

    la 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
     <table> 
            <logic:iterate name="EditerAgentForm" property="laMap" id="entree" indexId="ind">
                <tr>
                    <td>
                        <input type="radio" name="directionChoisie" onclick="<%="clicChoixDir(" + ind + ");"%>" value="1"/>
                        <bean:write name="entree" property="key"/>
                    </td>    
                    <td>
                        <html:select property="noService1" disabled="true" >
                            <html:optionsCollection  name="entree" property="value" value="value" label="label"/>
                        </html:select>
                    </td>
                </tr>    
            </logic:iterate>
        </table>
    en sachant que dans mon ActionForm, la TreeMap s'appelle laMap.

    SEb

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/04/2009, 11h37
  2. Réponses: 0
    Dernier message: 09/03/2009, 16h33
  3. [E-03] problème pour travailler sur 2 fichiers en même temps
    Par Emily2711 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 24/02/2009, 12h06
  4. Réponses: 2
    Dernier message: 27/01/2009, 13h47
  5. Problème pour rediriger sur une autre page html
    Par PatMh77 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 05/05/2008, 07h48

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