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 :

liste variable de radio boutons !


Sujet :

Struts 1 Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut liste variable de radio boutons !
    Bonjour,

    J'ai un tableau avec une liste (de taille variable) de régions pour lesquelles je propose 3 options (sous forme de radio boutons) :


    Mon problème est de récupérer les valeurs sélectionnées par l'utilisateur dans mon ActionForm derrière.

    voila le code que j'utilise dans ma JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <displaytag:table name="listeExtensionsRegionales"
    decorator="ParametrageRegionWrapper" class="displayLeft" defaultsort="1">
    		<displaytag:column property="region.code" title="Code région" class="resultCenter" />
    		<displaytag:column property="region.nom" title="Libellé" class="resultCenter" />
    		<displaytag:column property="pasExtension" title="" />
    		<displaytag:column property="emexRestreint" title="" />
    		<displaytag:column property="emexElargi" title="" />
    </displaytag:table>
    et le code de mon décorateur (qui affiche donc les radio boutons)
    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
     
    	public String getPasExtension() {
    		ParametrageRegion parametrageRegion = (ParametrageRegion) getCurrentRowObject();
    		String code=parametrageRegion.getRegion().getCode();
    		return "<input type='radio' name='region"+code+"' id='pasExt"+code+"' checked /><label for='pasExt"+code+"'>Pas d'extension</label>";
    	}
    	public String getEmexRestreint() {
    		ParametrageRegion parametrageRegion = (ParametrageRegion) getCurrentRowObject();
    		String code=parametrageRegion.getRegion().getCode();
    		return "<input type='radio' name='region"+code+"' id='emexRestreint"+code+"' /><label for='emexRestreint"+code+"'>EMEX restreint</label>";
    	}
    	public String getEmexElargi() {
    		ParametrageRegion parametrageRegion = (ParametrageRegion) getCurrentRowObject();
    		String code=parametrageRegion.getRegion().getCode();
    		return "<input type='radio' name='region"+code+"' id='emexElargi"+code+"' /><label for='emexElargi"+code+"'>EMEX élargi</label>";
    	}
    J'utilise Struts2.
    Je ne veux pas mettre 25+ getter/setter (un par region) , car 1) c'est moche et 2) on ne peut plus rajouter de region sans modifier le code.

    Merci à ceux qui ont lu, et encore plus à ceux qui répondront

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Points : 312
    Points
    312
    Par défaut
    pourquoi
    1) c'est moche
    ?

  3. #3
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    N'est il pas possible de rajouter à ton objet region les 3 attributs pasExtension, ...

    Ainsi, tu n'aurais pas à faire mille getter/setter comme tu dis mais seulement ben ... 3.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <displaytag:table name="listeExtensionsRegionales" decorator="ParametrageRegionWrapper" class="displayLeft" defaultsort="1">
     <displaytag:column property="region.code" title="Code région" class="resultCenter" />
     <displaytag:column property="region.nom" title="Libellé" class="resultCenter" />
     <displaytag:column property="region.pasExtension" title="" />
     <displaytag:column property="region.emexRestreint" title="" />
     <displaytag:column property="region.emexElargi" title="" />
    </displaytag:table>
    PS:
    Citation Envoyé par freez78 Voir le message
    2) on ne peut plus rajouter de region sans modifier le code.
    A mon avis, c'est pas pour demain qu'on va rajouter ou enlever des régions

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    @19cmos83 :
    C'est moche car ça m'oblige à avoir 25 attributs supplémentaires dans ma classe, dont certains null selon les situations (enfin, je trouve ça moche j'aurai du dire).

    Je pense (ou plutôt j'espère) qu'il y a une meilleure solution, comme récupérer une liste de string, avec un string par région, mais je ne trouve pas.

    @zorm :
    J'ai bien un attribut de type énumération correspondant à pasExtension, emEmexRestreint et emEmexElargi dans ma classe de ParametrageRegion (et je vais le positionner une fois que j'aurai réussi à récupérer proprement les choix de l'utilisateur).
    Le décorateur me permet d'afficher des boutons radio, et je dois récupérer la liste des boutons radio sélectionnés dans mon ActionForm derrière. Dans l'état actuel du code, il me faut, dans mon ActionForm, un attribut associé à chaque "name" différent pour les boutons radio (et les boutons radio sont regroupés par 3 sous un meme "name", une ligne quoi). Je dois donc actuellement avoir, dans mon ActionForm, autant d'attributs que de lignes.

    En fait, je n'ai pas bien compris ta proposition je crois, ajouter 3 attributs dans Region et modifier le code comme tu l'écris afficherait les valeurs de ces 3 attributs dans mon tableau, mais pas des boutons radio.

    Et ouais, on n'est pas près de changer les régions m'enfin bon, qui sait...

  5. #5
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Ok, j'ai mieux compris le problème.

    Je ne peux pas tester ce que je vais dire ci dessous car j'ai pas de projet Struts sous la main et j'ai la flemme d'en faire un.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <displaytag:table name="listeExtensionsRegionales" decorator="ParametrageRegionWrapper" class="displayLeft" defaultsort="1">
    <displaytag:column property="region.code" title="Code région" class="resultCenter" />
    <displaytag:column property="region.nom" title="Libellé" class="resultCenter" />
    <display:column><html:radio name="region.choixRadio" value="pasExtension"/>Pas d extension</display:column>
    <display:column> <html:radio name="region.choixRadio" value="emexRestreint"/>EMEX restreint</display:column>
    <display:column> <html:radio name="region.choixRadio" value="emexElargi"/>EMEX élargi</display:column>
    </displaytag:table>
    Dans la classe Region, tu mets un attribut avec getter/setter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String choixRadio = "pasExtension";
    Ainsi pour avoir les valeurs choisies, tu parcours ta liste de region.

    J'espere que ca marchera et que ca correspond à tes besoins. Dans cette solution, tu laisses tomber le décorateur

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta proposition zorm,

    j'ai essayé, et malheureusement tous les boutons radio du tableau possèdent le meme attribut "name", ce qui fait que lorsqu'on en coche un, TOUS les autres sont décochés, au lieu d'uniquement les 2 autres boutons de la même ligne.

    résultat, lorsque je valide le formulaire, le résultat est bien mis à jour pour la seule ligne qui a été cochée, mais pour toutes les autres il est null.

    dommage

  7. #7
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Certes, c'est embetant, je te l'accorde
    Désolé, plus de solution pour moi

  8. #8
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Éventuellement, sur ma solution, rajoute dans tous les tags html:radio la propriété C'est utilisé avec les logic:iterate habituellement pour différencier les boutons radios à chaque itération.

    Encore une fois, j'ai pas pu tester...

  9. #9
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Points : 246
    Points
    246
    Par défaut
    En partant de ton problème initial (avec le code que tu fournis):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    name='region"+code+"
    il te suffit dans ton action (celle executé suite au submit de ton formulaire)
    de reparcourir l'ensemble de tes régions (de tes codes région en fait) et de faire un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getParameter("region"+code);
    te retournera la valeur choisie.

    "Concernant ton choix de mettre trois attribut dans ton form bean pour chaque région ce n'est pas la bonne méthode vu que à chaque fois un seul ne sera pas null.

    Déclare plutôt un seul attribut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private String MonAttribut;
    il aura pour valeur pasExtension ou bien emexRestreint ou bien emexElargi.


    Autre proposition:
    ta liste de bean que tu appelles "listeExtensionsRegionales" est accessible directement:

    donc tu peux directement mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "listeExtensionsRegionales[${i}].MonAttribut"
    au niveau du champ "name" de ton radio bouton mais il faudra initialiser une variable d'itération "i" à 0 avant d'afficher ton displaytable et penser à bien l'incrémenter.

    Un truc du genre:

    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
    <c:set var='i' value=0/>
    <displaytag:table name="listeExtensionsRegionales" id="region" decorator="ParametrageRegionWrapper" class="displayLeft" defaultsort="1">
    
     <displaytag:column property="region.code" title="Code région" class="resultCenter" />
    
     <displaytag:column property="region.nom" title="Libellé" class="resultCenter" />
    
     <displaytag:column title="" >
    <input type='radio' name='listeExtensionsRegionales[${i}].MonAttribut'+"' id='emexRestreint"+${region.code}+"' value="pasExtension "/><label for='emexRestreint"+${region.code}+"'>EMEX restreint</label>"
    </displaytag:column>
    
    <displaytag:column title="" >
    <input type='radio' name='listeExtensionsRegionales[${i}].MonAttribut'+"' id='emexRestreint"+${region.code}+"' value="emexRestreint "/><label for='emexRestreint"+${region.code}+"'>EMEX restreint</label>"
    </displaytag:column>
    
    <displaytag:column title="" >
    <input type='radio' name='listeExtensionsRegionales[${i}].MonAttribut'+"' id='emexRestreint"+${region.code}+"' value="emexElargi"/><label for='emexRestreint"+${region.code}+"'>EMEX restreint</label>"
    </displaytag:column>
    
    <c:set var="i" value="${i+1}"/>

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Salut karement !

    Je n'ai pas réussi à appliquer ta seconde solution (on ne peut pas incrémenter de variable a l'intérieur d'un displaytag, enfin je n'ai pas trouvé comment)

    J'ai utilisé ta première solution et ça fonctionne bien par contre, donc merci beaucoup

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par zorm Voir le message
    PS:
    A mon avis, c'est pas pour demain qu'on va rajouter ou enlever des régions

    Bun c'est pas pour longtemps non plus ?

    Savoie Libre territoire Indépendant tu connais pas

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

Discussions similaires

  1. Liste et sélection d'un élément via un radio bouton
    Par xavierj2ee dans le forum Struts 1
    Réponses: 6
    Dernier message: 08/04/2008, 15h49
  2. choix dans une liste avec un radio bouton
    Par spinnaker dans le forum Struts 1
    Réponses: 1
    Dernier message: 19/03/2008, 22h03
  3. Réponses: 6
    Dernier message: 07/11/2006, 15h55
  4. [Merise] liste variable de propriétés
    Par Oberown dans le forum Schéma
    Réponses: 10
    Dernier message: 31/08/2004, 15h36

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