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-Layout] Récupérer les valeurs de la deuxième collection d'un layout:swap


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Sénégal

    Informations forums :
    Inscription : Mars 2003
    Messages : 80
    Par défaut [Struts-Layout] Récupérer les valeurs de la deuxième collection d'un layout:swap
    Bonsoir,
    J'aimerais savoir comment récupérer les infos de la deuxième liste de mon layout:swap.

    Ma première liste est bien remplie et la deuxiéme est vide :
    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
     
    MaClasseCommande cmd= new MaClasseCommande();
     
    ListeFonc listeFonc = new ListeFonc();
     
    Vector listFoncInitial = new Vector();
     
    ArrayList list1 = new ArrayList();
    ArrayList list2 = new ArrayList();
     
    // récupérer la liste des fonctionnalités
    listeFonc = cmd.getListeFonctionnalites();
     
    listFoncInitial = listeFonc.getListFoncInitial();
     
    for (int i = 0; i < listFoncInitial.size(); i++) {
       FonctionnalitesVO foncvo = new FonctionnalitesVO();
       foncvo = (FonctionnalitesVO) listFoncInitial.get(i);
       list1.add(foncvo);
    }
     
    request.setAttribute("list1", list1);
    request.setAttribute("list2", list2);
    Maintenant aprés avoir pris des éléments de list1 vers list2, je veux récupérer les éléments de list2
    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
     
     
    //La classe des commandes
    MaClasseCommande cmd= new MaClasseCommande();
    //Le Form Bean
    RcGroupefonctionFB fb= (RcGroupefonctionFB) form;
     
    //Le VO
    GroupefonctionVO vo= new GroupefonctionVO();
     
    //La page de forward
    String page = "saisieRcGroupefonction";
    String[] list2 = rcGroupefonctionfb.getIds2();
     
    System.out.println("Monaction(1) :"+ fb.getIds1.length());
    System.out.println("Monaction(2) :"+ fb.getList1().size());
    System.out.println("Monaction(3) :"+ list2.length);
    System.out.println("Monaction(4) :"+ fb.getList2().size());
     
    for (int i = 0; i < list2.length; i++) {
       System.out.println("---list2 i--->" + list2[i]);
    }
    A l'affichage de mon System.out j'ai :
    Monaction(1) :1
    Monaction(2) :325 // le nombre de lignes de ma list1
    Monaction(3) :1
    Monaction(4) :0 // Alors que visuellement j'ai 5 éléments dans list2
    ---list2 i---> MAN001 // C'est le premier élément qui est retourné alors qu'il y en 5 dans list2
    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
    Peux-tu montrer le code de la jsp et celui de l'ActionForm ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Sénégal

    Informations forums :
    Inscription : Mars 2003
    Messages : 80
    Par défaut
    Bonjour
    Le code 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
    <layout:row>
    	<layout:swap property="rccodefonction,rccodefonction"
    		formProperty="ids1,ids2" selectedStyleClass="FORMSWAP">
    		<layout:collection name="list1" styleClass="FORM2">
    			<layout:collectionItem title="list1.codefonction"
    				property="rccodefonction" />
    			<layout:collectionItem title="list1.libellefonction"
    				property="rclibfonction" style="text-align:left;" />
    		</layout:collection>
    		<layout:collection name="list2" styleClass="FORM2">
    			<layout:collectionItem title="list1.codefonction"
    				property="rccodefonction" />
    			<layout:collectionItem title="list1.libellefonction"
    				property="rclibfonction" style="text-align:left;" />
    		</layout:collection>
    	</layout:swap>
    </layout:row>
    et celui de mon ActionForm :
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    public class RcGroupefonctionFB extends ActionForm {
    	private String pk;
     
    	/** Partie SWAP ** */
    	private String[] ids1;
    	private String[] ids2;
    	private String rccodefonction;
    	ArrayList list1 = new ArrayList();
    	ArrayList list2 = new ArrayList();
     
     
                 public ArrayList getList1() {
    		return list1;
    	}
     
    	/**
             * @param list1
             *            list1 à définir.
             */
    	public void setList1(ArrayList list1) {
    		this.list1 = list1;
    	}
     
    	/**
             * @return Renvoie list2.
             */
    	public ArrayList getList2() {
    		return list2;
    	}
     
    	/**
             * @param list2
             *            list2 à définir.
             */
    	public void setList2(ArrayList list2) {
    		this.list2 = list2;
    	}
     
    	/**
             * @return Renvoie ids1.
             */
    	public String[] getIds1() {
    		return ids1;
    	}
     
    	/**
             * @param ids1
             *            ids1 à définir.
             */
    	public void setIds1(String[] ids1) {
    		this.ids1 = ids1;
    	}
     
    	/**
             * @return Renvoie ids2.
             */
    	public String[] getIds2() {
    		return ids2;
    	}
     
    	/**
             * @param ids2
             *            ids2 à définir.
             */
    	public void setIds2(String[] ids2) {
    		this.ids2 = ids2;
    	}
     
    	/**
             * @return Renvoie rccodefonction.
             */
    	public String getRccodefonction() {
    		return rccodefonction;
    	}
     
    	/**
             * @param rccodefonction
             *            rccodefonction à définir.
             */
    	public void setRccodefonction(String rccodefonction) {
    		this.rccodefonction = rccodefonction;
    	}
    }

  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
    Il y a une erreur ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RcGroupefonctionFB fb= (RcGroupefonctionFB) form;
    String[] list2 = rcGroupefonctionfb.getIds2();
    Tu devrais avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RcGroupefonctionFB fb= (RcGroupefonctionFB) form;
    String[] list2 = fb.getIds2();
    Sinon, vu le code que tu as posté, les ArrayList list1 et list2 sont mises dans le scope request via la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    request.setAttribute("list1", list1);
    request.setAttribute("list2", list2);
    En aucun cas, tu mets à jour les propriétés list1 et list2 de ton ActionForm RcGroupefonctionFB.
    Donc, normalement, lorsque tu affiches la taille de list1 et list2 via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println("Monaction(2) :"+ fb.getList1().size());
    System.out.println("Monaction(4) :"+ fb.getList2().size());
    tu devrais avoir 0 dans les deux cas.

    Comme tu n'as pas 0 sur le premier, j'en déduis que quelque part dans ton Action tu as initialisé l'ArrayList list1 de ton ActionForm via ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RcGroupefonctionFB fb= (RcGroupefonctionFB) form;
    fb.setList1(list1);
    Donc, sinon, dans la jsp, lorsque tu passes des éléments de la première liste vers la deuxième liste, ce sont les propriétés ids1 et ids2 qui sont modifiées.

    Donc, pour modifier l'ArrayList list2 en fonction des rccodefonction contenus dans le tableau de String ids2, dans la méthode exécutée au submit du formulaire, il faut coder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ArrayList list2 = new ArrayList() ;
    RcGroupefonctionFB fb= (RcGroupefonctionFB) form;
    String[] ids2= fb.getIds2();
    for (int i = 0; i < ids2.length; i++)
    {
       String rccodefonction = ids2[i];
       FonctionnalitesVO foncvo = // code permettant de retrouver le bean FonctionnalitesVO ayant pour rccodefonction = ids2[i] ;
       list2.add(foncvo) ;
    }
    request.setAttribute("list2",list2);
    En espérant avoir été assez claire.

    Questions : ton Action hérite bien de DispatchAction et tu as bien intégré le javascript swap.js du répertoire config dans ta jsp ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Sénégal

    Informations forums :
    Inscription : Mars 2003
    Messages : 80
    Par défaut
    Salut,
    Oui mon Action hérite bien de DispatchAction et j'ais bien intégré le javascript swap.js du répertoire config dans la jsp.

    Lorsque que je bascule des éléments de ma liste1 vers ma liste2, je vois bien au niveau de ma page que ma liste2 contient les nouveaux éléments. Cependant lorsque j'exécute ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String[] ids2= fb.getIds2();
    for (int i = 0; i < ids2.length; i++)
    {
       //
    }
    je me rends compte que la taille de ids2 est égale à 1, en l'occurence le premier élément de ma liste (qui je le rappelle en contient 5)..

    Autre chose, si tu initialises list2 à new Array(), lorsque tu rentres dans ta boucle tu n'auras qu'une seule itération, non?

  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
    Si dans la page jsp, tu as transféré 5 éléments dans la liste 2, tu devrais donc avoir 5 éléments dans ids2.
    Donc, là, je ne comprends pas pourquoi tu en trouves un seul.

    Sinon, list2 étant vide avant que tu transfères des éléments d'une liste à l'autre, tu peux très bien faire un new ArrayList() pour la remplir avec les éléments que tu viens de transférer et que tu dois normalement retrouver dans ids2.

    En fait, je m'étais trompée, j'avais mis list2.length au lieu de ids2.length :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ArrayList list2 = new ArrayList() ;
    RcGroupefonctionFB fb= (RcGroupefonctionFB) form;
    String[] ids2= fb.getIds2();
    for (int i = 0; i < ids2.length; i++)
    {
       String rccodefonction = ids2[i];
       FonctionnalitesVO foncvo = // code permettant de retrouver le bean FonctionnalitesVO ayant pour rccodefonction = ids2[i] ;
       list2.add(foncvo) ;
    }
    Peux-tu montrer le code complet de la DispatchAction ?

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

Discussions similaires

  1. DBGrid récupérer les valeurs de l'enregistrement courant
    Par bob_sapp dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/09/2014, 07h56
  2. Réponses: 1
    Dernier message: 14/01/2014, 10h48
  3. Réponses: 4
    Dernier message: 24/06/2010, 10h49
  4. Récupérer les valeur sur une deuxième page
    Par Msysteme dans le forum ASP.NET
    Réponses: 4
    Dernier message: 02/03/2009, 18h10
  5. [Couleur] Récupérer les valeurs R,V,B et L,U,V ?
    Par M4v3rick dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/01/2004, 03h28

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