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 :

problème de répétition dans un menu déroulant en utilisant <logic:iterate>


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 20
    Points
    20
    Par défaut problème de répétition dans un menu déroulant en utilisant <logic:iterate>
    bonjour,
    voilà j'ai un petit souci, j'utilise un menu déroulant dans une page jsp (Strut) en utilisant la balise html <select> et <logic:iterate> ce qui m'évitera de définir un formulaire. Mon problème est que j'ai des répétitions au niveau de mon menu déroulant, et je sais pas comment faire pour les éviter!
    voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <select name="nomliste" id ="idlist">
    <logic:iterate id="idConfig" name="tests">
     <option value="<bean:write name="idConfig" property="ConfigCode"/>">
        <bean:write name="idConfig" property="ConfigCode"/>
     </option>
    </logic:iterate>
    </select>
    Merci beaucoups pour votre aide

  2. #2
    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
    Qu'entends-tu par répétitions ?

    Sinon, pour afficher ta liste déroulante, il y a plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="nomliste">
       <html:optionsCollection name="tests" value="configCode" label="configCode"/>
    </html:select>
    J'ai volontairement écrit configCode et non ConfigCode car selon les conventions de nommage Java, les noms des propriétés doivent commencer par une minuscule et une majuscule à chaque nouveau mot à partir du deuxième.
    Tu devrais donc renommer ConfigCode en configCode.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    merci pour ta réponse, ainsi que pour ta remarque, mais j'ai éviter d'utiliser <html:select> car sinon je serai obliger de définir un ActionForm associé.
    mon problème est que je ne sais pas comment faire afin de ne pas avoir les mêmes valeurs dans le menu, c'est à dire dans : <option>
    par exemple maintenant j'ai dans le menu {valeur1,valeur2,valeur1}

  4. #4
    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
    Et quel est l'intérêt de ne pas avoir d'ActionForm associée ?

    Sinon, c'est au moment où tu constitues la collection tests qu'il faut t'assurer que tu n'as pas de doublons.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    si je défini un nouveau ActionForm (un nouveau formulaire), il faut l'associer à une action et cela perturbe le fonctionnement général de l'application. par contre comme ça je récupére l'option sélectionné par javascript et je fait correctement mes traitement.
    Est ce que c'est possible de faire un test à l'aide de java script ou bien directement insérer du code java avant l'ecriture dans <option>, afin de vérifier que cette valeur n'existe pas déja.
    je ne peux modifié le bean retournant la collection car il est utilisé dans beaucoups d'autres appels!
    j'ai pensé à faire ça mais je connais pas trops en javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     function testExist(){
        for (var i=0; i<document.getElementById('idlistConfig').options.length; i++) {
             if (document.getElementById('idlistConfig').options[i].value=="<bean:write name="idConfig" property="configCode"/>") {
                     return false;
            }
          }
            return true;
         }
        </script>

  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
    Mais sans modifier la méthode existante, tu pourrais très bien créer une nouvelle méthode qui retourne une collection d'objets distincts non ?

    Sinon, il y a toujours moyen de mettre du code Java dans la jsp mais bon, c'est franchement dommage.

    Je ne suis pas forte en Javascript mais le code que tu as posté ne pourra pas fonctionner car tu utilises un tag Struts qui s'exécute côté serveur avec du javascript qui s'exécute côté client.
    De plus, vu la logique que tu appliques, cela suppose que les valeurs en double se suivent, ce qui n'est peut-être pas le cas.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    Excuse moi, mais j'ai cru que le code javascript s'exécute toujours côté client au niveau du navigateur ?.

  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
    Le javascript oui mais le tag bean:write non.

    Tu ne peux vraiment pas créer une nouvelle méthode qui constitue une collection sans doublons ?

    Et est-ce que tes valeurs en double se suivent obligatoirement ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    La réponse est oui, les mêmes valeurs se suivent toujours. Merci beaucoups pour tes précieuses réponses, je te tiens au courant des nouvelles, J'essayerai de créer une nouvelle liste sans valeurs redandantes, mais c'est un peu compliqué au niveau de l'application!.

  10. #10
    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
    Si les valeurs en double se suivent toujours, il y a peut-être une solution en sauvegardant le configCode en cours via un tag bean:define pour ensuite pouvoir le comparer avec le configCode suivant via un tag logic:equal.
    Mais bon, c'est un peu du bricolage.

    Enfin, le plus propre est de créer une nouvelle méthode.
    A partir de ta collection, tu peux créer un Set qui va automatiquement éliminer les doublons.
    Un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public List getDistinctsConfigCode(List configCodeList)
    {
       Set configCodeSet=new HashSet() ;        
       for (int i = 0; i < configCodeList.size(); i++)
       {
          configCodeSet.add((String) configCodeList.get(i).getConfigCode()) ;
       }
       List distinctsConfigCode = new ArrayList(configCodeSet) ;
       return distinctsConfigCode ;
    }

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoups pour ton aide , j'ai crée une nouvelle liste sans doublans et ça marche très bien.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/07/2008, 12h30
  2. Réponses: 5
    Dernier message: 15/08/2006, 16h51
  3. lister les noms de dossier dans un menu déroulant
    Par WeDgEMasTeR dans le forum Langage
    Réponses: 9
    Dernier message: 01/04/2006, 01h53
  4. problème de couleur dans le Menu [MainMenu - ImageList]
    Par alec_002 dans le forum Composants VCL
    Réponses: 8
    Dernier message: 01/09/2005, 15h29
  5. [FLASH MX] Action des boutons dans un menu déroulant
    Par zab_paris dans le forum Flash
    Réponses: 1
    Dernier message: 05/07/2005, 18h14

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