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 :

Options et imbrication d'ArrayList


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    software developer
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : software developer

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut Options et imbrication d'ArrayList
    Bonjour tout le monde,

    Voila je débute en Struts, malheureusement, et j'ai un petit problème dans l'utilisation de html:options (nested offre t il une solution ?) dans un projet que je n'arrive pas à résoudre, donc je viens demander un peu d'aide pour me sortir de là.

    Dans le cadre d'un projet, je me retrouve avec une ArrayList qui contient une autre ArrayList (qui elle contient mes LabelValueBean).
    Et si je n'arrive pas à m'en sortir avec cette imbrication pour retirer mes données de mes listes.

    Dans mon ActionForm, cela est defini comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class TransfertActionForm extends ActionForm {
    ...
    private ArrayList commandesFtpList = new ArrayList();
    ...
    public void addCommandeList() {
      this.commandesFtpList.add(new ArrayList());
    }
    ...
    public void addCommande(int index, String vcommandFtpName){
       LabelValueBean b = new LabelValueBean(vcommandFtpName,""+index);
       ((ArrayList) this.commandesFtpList.get(index)).add(b);
    }
    }
    Dans le Action, je fais bien cette methode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("collCommande", actionForm.getCommandesFtpList());
    (où getCommandesFtpList() renvoie mon ArrayList d'ArrayList)

    Mais après dans le JSP, je ne vois pas comment boucler pour faire des listbox pour chaque commandesFtpList.get(i)...
    Auriez un exemple, ou une idée de comment m'en sortir...

  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
    Alors si j'ai bien compris (mais j'avoue que je ne suis pas certaine que c'est le cas) :

    Pour boucler sur une ArrayList contenant des ArrayList de LabelValueBean, moi je coderais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <logic:iterate id="sousListe" name="mainListe">
      <html:select property="itemSelected">
        <html:options collection="sousListe" property="value" labelProperty="label"/>
      </html:select>
    </logic:iterate>
    Par contre, si c'est bien cela que tu veux faire, ce code-là va poser problème dans la mesure où l'élément sélectionné (soit itemSelected dans mon exemple) sera le même pour chacune des listes déroulantes.
    Il faudrait donc le paramètrer.

    Avant d'aller plus loin, dis-moi si cela correspond bien à ton besoin.

  3. #3
    Membre habitué
    Profil pro
    software developer
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : software developer

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut
    Oui oui merci c'est bien cela, une ArrayList contenant une ArrayList de LabelValueBean.
    Le problème étant pour moi la gestion du rajout de l'itération (puisqu'une ArrayList de LabelValueBean j'y arrive).

    J'etais parti dans une boucle avec un <c:forEach/>, mais ton système marche bien mieux que le mien... (j'ai testé dans le cas où la premiere liste ne contient qu'un element, je recupère enfin mes données)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <logic:iterate id="sousListe" name="collCommande">
    	<html:select property="commandesFtpListSelected">
    		<html:options collection="sousListe" property="value" labelProperty="label"/>
    	</html:select>
    </logic:iterate>
    En effet pour le commandesFtpListSelected (itemSelected dans ton exemple), je vais me retrouver avec un autre problème.
    Comment dois je parametrer celui-ci ? (ArrayList de String ?)

  4. #4
    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
    Avec un c:forEach, c'est encore mieux et ça doit fonctionner également :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <c:forEach var="sousListe" items="${collCommande}">
      <html:select property="commandesFtpListSelected">
        <html:options collection="sousListe" property="value" labelProperty="label"/>
      </html:select>
    </c:forEach>
    Pour le paramétrage de l'élément sélecté, une solution serait d'indicer la variable.
    Dans ce cas, il faudrait utiliser l'option indexId du tag logic:iterate ou l'option varStatus du tag c:forEach.
    Cette solution te convient-elle ?

  5. #5
    Membre habitué
    Profil pro
    software developer
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : software developer

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut
    Ouais très bien.
    Dans le cadre du <c:forEach>, j'e dois donc mettre ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <c:forEach var="sousListe" items="${collCommande}" varStatus="vStatus">
    	<html:select property="${commandesFtpListSelected}[${vStatus.index}]">
    Où commandesFtpListSelected devient un tableau ?

  6. #6
    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
    Dans ton cas (un select simple et non un select multiple), la propriété codée dans le html:select doit être un String et non un tableau de String.

    Je pensais donc simplement à une variable suffixée par l'indice, ce qui donnerait commandesFtpListSelected0, commandesFtpListSelected1, ...
    Ceci implique que tu définisses ces propriétés dans l'ActionForm avec getter et setter sur chacune.

    Et dans la jsp, ce serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <c:forEach var="sousListe" items="${collCommande}" varStatus="vStatus">
    	<html:select property="commandesFtpListSelected${vStatus.index}">
    A tester bien sûr.

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

Discussions similaires

  1. imbrication de classe et arraylist
    Par greg08 dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 10/11/2009, 20h55
  2. [Kylix] kylix3 : pb sur options de projet
    Par Arsene dans le forum EDI
    Réponses: 3
    Dernier message: 09/04/2003, 10h41
  3. [propriétés]Option Checked
    Par psl dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/08/2002, 08h07
  4. Parametrage des options de projet
    Par ares7 dans le forum EDI
    Réponses: 7
    Dernier message: 22/07/2002, 15h33
  5. Vous gerez comment les options d'un programme?
    Par n0n0 dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/05/2002, 13h21

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