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 :

plusieurs Listes dans une liste


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 45
    Points
    45
    Par défaut plusieurs Listes dans une liste
    Bonjour,

    J'ai donc une liste Composé de Thèmes, à l'interieur de laquelle pour chaque theme, j'ai des options details, et pour chaque option détail, j'ai des domaines valeur(ce sont des radio boutons), Cequi nous fait en tout 3 listes imbriquées:
    Il ya 3 niveaux:

    Theme 1
    Option detail 1 oui non tous (domaines de valeur:radio boutons)
    Option detail 2 oui non tous (domaines de valeur:radio boutons)
    Theme 2
    Option detail 1
    ......
    ...

    dans Ma classe action j'envoie donc une liste composée de ces 3 collections:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formulaire.setLesDomainesTh();
    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
     
    <%-- boucle des themes-->
    <logic:iterate id="Theme" name="form" property="lesDomainesTh" indexId="indTheme">
             <bean:write name="Theme" property="libelle"/>                         
     
                         <%-- boucle des options-->
     
       <logic:iterate id="OptionDetail" name="Theme" property="lesOptionsDetails" >               
                <bean:write name="OptionDetail" property="libelle"/>    
     
            <%--on affiche les radios boutons en fonction de loptionDetail en cours-->   
                 <logic:iterate id="DomaineValeur" name="OptionDetail"property="listeDomaineValeur" >         
     
     
                   <html-el:radio idName="DomaineValeur"  name="OptionDetail" property="identifiant(${indTheme},${indDetail})" value="identifiant">
                      <bean:write name="DomaineValeur" property="libelle"/>
                    </html-el:radio>
             </logic:iterate>                      
       </logic:iterate>                                    
    </logic:iterate>
    Mon probleme, c'est que je ne sais pas comment récuperer à la soumission, les valeurs des radios boutons EN FONCTION de chaque Option Detail, sachant que la liste de domaine valeur est imbriquée au 3eme niveau.
    Comment récuperer un truc du style (code option detail, id domaine valeur)
    en sachant que mes listes option detail et domaine valeur sont imbriquées.
    C'est pourquoi pour afficher un élément imbriqué dans la liste :
    .
    Ici,Le name n'est pas egal à "form", je ne peux donc pas creer un parametre dans le formulaire pour récuperer mes valeurs donc c'est la merde!!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    L'important est de regarder le code source HTML généré par ton "code Struts". C'est la meilleure facon de comprendre ce qu'essaie de faire Struts.

    Petit rappel : quand Struts voit un champ du type : <html:text property="machin" name="truc" indexed="true"> (ou plutôt le résultat du submit d'un champ de ce type), il cherche, dans ton ActionForm, un getter du genre : "public TonObjet getTruc(int index)", pour faire, au final, une évaluation du style :
    "tonForm.getTruc(index).getMachin()"

    Il te faut donc coder une méthode du type "public TonObjet getTruc(int index)" qui renvoie un objet de ton itération.
    La même chose est à faire pour tous tes objets itérés (par exemple, dans ton objet "Theme" (ou plutôt sa classe), tu dois avoir, dans ton ActionForm, un getter du genre "tonForm.getOptionDetail(index)" qui te retourne l'enieme detail de l'objet "Theme".

    P.S. : Nommer une variable java "Theme" est contraire aux règles de nommage java et rend la compréhension de ton code plus difficile.

  3. #3
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 45
    Points
    45
    Par défaut
    as tu lu ce que j'ai marqué?
    affichez le code source n'est d'aucune utilité ici, ca n'a aucun rapport!!
    J'ai posté car j'ai un objet qui contient 3 listes imbriquées et je ne sais vraiment pas comment faire pour récuperer les valeurs selectionnées sachant qu'elles sont imbriquées. C'est pas comme si j'affichais une liste toute bête avec des radios boutons, mon pote!! non là, ya 3 listes, tu piges?? 3!!!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Citation Envoyé par mnemonic78
    affichez le code source n'est d'aucune utilité ici, ca n'a aucun rapport!!
    Alors qu'est-ce qui est en rapport ?? Je ne sais pas ce que donne une imbrication sur 3 niveaux, certes, mais le rendu HTML nous donnerait probablement la meilleure appréciation du comportement de Struts (si tu ne le penses pas, c'est que tu n'as rien compris à Struts). Et je pense que je peux t'aider.

    Et, si à l'avenir tu évites de me traiter implicitement d'abruti quand tu juges ma réponse peu pertinente (ou plutôt quand tu craques ton slip, comme on dit dans le jargon informatique), peut-être que je passerai un peu plus de temps à la résolution de tes problèmes.

    Je reste à l'écoute, et t'invite à me donner les renseignements demandés pour que je puisse t'aider plus efficacement.

  5. #5
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Citation Envoyé par mnemonic78
    as tu lu ce que j'ai marqué?
    affichez le code source n'est d'aucune utilité ici, ca n'a aucun rapport!!
    J'ai posté car j'ai un objet qui contient 3 listes imbriquées et je ne sais vraiment pas comment faire pour récuperer les valeurs selectionnées sachant qu'elles sont imbriquées. C'est pas comme si j'affichais une liste toute bête avec des radios boutons, mon pote!! non là, ya 3 listes, tu piges?? 3!!!
    Oh oui la la culotte y est passée. Mais bon puisque tu as du en mettre une new on continue la discussion

    Perso je pense que lire à tete reposer ce que mixouille t'a dit devrait t'aider beaucoup plus que ce que tu veux bien penser. En effet la résolution de ton problème se trouve dans ces dires:

    Citation Envoyé par mixouille
    Il te faut donc coder une méthode du type "public TonObjet getTruc(int index)" qui renvoie un objet de ton itération.
    La même chose est à faire pour tous tes objets itérés (par exemple, dans ton objet "Theme" (ou plutôt sa classe), tu dois avoir, dans ton ActionForm, un getter du genre "tonForm.getOptionDetail(index)" qui te retourne l'enieme detail de l'objet "Theme".
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Ceci dit, personnellement, je ne sais pas où l'on doit mettre le getter "indexé" pour un sous-sous-...-sous-bean : dans l'ActionForm "général" (dans ce cas, avec quelle signature ??), ou dans le bean parent du sous-sous-...-sous-bean ? (plus probable il me semble)

  7. #7
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Dans le form général, fait un getter qui appel ta premiere liste qui appel ta 2iemme qui appel ta 3iemme, bien sur il faut mettre le bon nombre d'argument donc au moins 2!
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Ok, donc il faut adapter le nombre d'arguments au niveau d'itération, encore un truc bon à savoir !

  9. #9
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 45
    Points
    45
    Par défaut
    ok bon désolé mixouille, je craque mais bon le fait que le listes soient imbriquées complexifit serieusement les choses.
    Bref vous medites faire un get pour chaque collection
    getTheme (int i)
    getOptionDetail(int i)
    getDomaineValeur(int i)cela me donnera la valeur du radio bouton coché?


    Est ce que vous me proposez cela?Moi je veux bien, mais quand la type va soumettre le formulaire et que je vais passer dans mon action, cela implique que je vais devoir reparcourir les 3 listes imbriquées, et faire un get pour chaque pour connaitre les valeurs avant d'inserer dans la base???

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Citation Envoyé par mnemonic78
    Bref vous medites faire un get pour chaque collection
    getTheme (int i)
    getOptionDetail(int i)
    getDomaineValeur(int i)cela me donnera la valeur du radio bouton coché?
    Non, ce que proposait maxf1 ressemblerait plutôt à ca, si j'ai bien compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public Theme getTheme (int i) {
      return getThemes().get(i);
    }
     
    public OptionDetail getOptionDetail(int i, int j) {
      return getTheme(i).getOptionsDetails().get(j);
    }
     
    public DomaineValeur getDomaineValeur(int i, int j, int k) {
      return getOptionDetail(i, j).getDomainesValeurs().get(k);
    }
    C'est bien cela max ?

  11. #11
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 45
    Points
    45
    Par défaut
    ok donc des que je reviens dans mon action vous êtes d'accord que je parcours mes 3 lsites imbriquées à chaque fois, j'utilise les méthodes de la classe form pour récuperer la valeur du radio bouton coché pour elle option détail? La méthode ci dessous est censé me renvoyer les identifiants des radios boutons qui sont cochés et les autres, elle les zappe???
    [code]
    public DomaineValeur getDomaineValeur(int i, int j, int k)
    {
    return getOptionDetail(i, j).getDomainesValeurs().get(k);
    }

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Si j'ai bien compris ton code, getDomaineValeur() renvoie probablement plutôt un String, qui correspond au "value" de ton bouton radio sélectionné (les value des boutons radio ne peuvent être que des String il me semble).
    Si aucun bouton radio n'est sélectionné, ca te renverra null (sauf erreur de ma part).

  13. #13
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 45
    Points
    45
    Par défaut
    non la value de mon html-el:radio est un indentifiant, donc un int, tu m'avais demandé le code source html, le voici:

    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
     
    <table>
      <tr>
         <!--ca c litération des themes-->
          <td><b><h3>Theme 1 arccam</tr></h3></b></td>                            
     
          <!-- on affiche loption en cours-->
           <tr>
                <td width="400">
                    Accès à lécran des DMI rejetés</td>      
                     <!-- on affiche les radios boutons en fonction de loptionDetail en cours-->      
                     <td width="120">
                          <input type="radio" name="identifiant(0,0)" value="1">Non
                      </td>
                       <td width="120">
                            <input type="radio" name="identifiant(0,0)" value="2">Oui
                      </td>
            </tr>
             <tr>
                  <td width="400">
                     Accès à l'écran des MO rejetés
                 </td>
    Donc logiquement, quand dans mon action je vais parcourir mes lsites et que je vais faire formulaire.getDomaineValeur(i,j).getIdentifiant(), il est censé me renvoyer soit 1 soit 2, il me reste plus qu'a esperer que ca fonctionne car là je n'en puis plus!
    Bon je vais tester...

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    A mon avis, aucune chance que ca marche :

    - C'est quoi "identifiant" ? Ce ne serait pas plutôt "DomaineValeur" que tu devrais utiliser (je peux me tromper, je ne connais pas le fonctionnement de la balise html-el:radio)
    - "identifiant(0,0)" ne sera pas compris par Struts je pense (il faudrait plutot un identifiant[0][0])
    - Peut-être que html-el accèpte un int en value, tout ce que je sais c'est que html:radio ne l'accèpte pas en 1.2 (ce qui est un peu bête d'ailleurs)
    - Tu continues apparemment à coder "à la main" des choses du genre "identifiant(${indTheme},${indDetail})", alors que de simples html:radio avec un attribut indexed="true" devraient être suffisants.

    Je te donnerais bien un exemple approprié, mais ton code reste un peu flou pour moi (notamment cet attribut mystérieux : "identifiant" ??)

  15. #15
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 45
    Points
    45
    Par défaut
    désolé mixouillle, mais si tu avais vraiment compris, mon probleme de listes imbriquées, tu ne me demanderais pas de mettre "indexed= true" avec un simple html:radio, car le fait de mettre, "indexed=true" aurait comme conséquence, un même name quelque soit l'option detail en cours.
    Identifiant c'est un entier(1,2,3,4) et que possède chaque radio bouton(DomaineValeur)!
    Par exemple le radio bouton "oui" => identifiant=1
    le radio bouton "non"=>identifiant=2
    etc...

    Mon identifiant que j'affiche provient de name="DomaineValeur", mon bean metier, c'est un Int et non un tableau [][], je ne peux donc pas mettre identifiant[][].

    Pfiou c'est pas gagné la résolution de ce probleme, mais ca m'étonne pas, en même temps, dans le pôle J2EE de ma boîte, personne n'a pu m'aider!!

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Citation Envoyé par mnemonic78
    désolé mixouillle, mais si tu avais vraiment compris, mon probleme de listes imbriquées, tu ne me demanderais pas de mettre "indexed= true" avec un simple html:radio, car le fait de mettre, "indexed=true" aurait comme conséquence, un même name quelque soit l'option detail en cours.
    Non. Et c'est la deuxième fois sur ce thread que tu m'expliques à tort que je suis à côté de la plaque. J'arrête donc là, vu qu'apparemment il y a incompatibilité entre nos protocoles .

    Maintenant, si tester les solutions que je te propose t'écorche les mains, le mieux serait de le dire, parce que j'ai bien dû passer plus d'1h sur ton problème, ca mérite peut-être un test de ta part non ?

  17. #17
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 45
    Points
    45
    Par défaut
    mdr tu vas pas pleurer quand même non?
    bref ta solution qui n'en est pas une, je l'ai testé, ya 3 mois(c'est mon deuxième post à ce sujet), en tout cas, désolé, que tu sois aussi susceptible, mais ca arrive à tout le monde de pas comprendre quelquechose, ptit bonhomme!en tout cas merci quand même mec!
    Et si t'avais réfléchi un tant soit peu avant de te sentir directement agressé, t'aurai capté qu'en mettant un indexed=true, comme j'ai 3 listes imbriquées et que je suis amené à iterer plusieurs fois sur mes options details, forcément je vais être amené à me retrouver avec le même name (DomaineValeur[0]) pour des options details différentes, on peut facilement imaginer les conséquences de cela, pour cocher par la suite mes radios boutons.o

Discussions similaires

  1. une liste dans une liste?
    Par JerryOne3 dans le forum C#
    Réponses: 11
    Dernier message: 11/01/2009, 16h43
  2. [débutant] Comment gérer une liste dans une liste
    Par Lenoiche dans le forum iReport
    Réponses: 0
    Dernier message: 16/07/2008, 10h41
  3. champ d'une liste lié à une liste dans un autre site
    Par guintolli dans le forum SharePoint
    Réponses: 8
    Dernier message: 08/07/2008, 14h51
  4. Réponses: 5
    Dernier message: 27/09/2007, 13h39
  5. Appel d'une liste dans une liste (JSTL)
    Par abalgue dans le forum Hibernate
    Réponses: 4
    Dernier message: 15/06/2007, 10h56

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