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 2 Java Discussion :

Probleme checkboxlist avec des objets (et non juste des String)


Sujet :

Struts 2 Java

  1. #1
    Invité
    Invité(e)
    Par défaut Probleme checkboxlist avec des objets (et non juste des String)
    Bonjour.

    Je n'arrive pas à utiliser proporement une checkboxlist avec struts 2.
    J'utilise aussi hibernate (d'où l'utilisation des map)
    Je tourne dans tous les sens.

    Tout d'abord,
    un utilisateur peut contenir un ensemble de groupe de contrat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class Utilisateur implements java.io.Serializable {
    ....
    	private Set<GroupeContrat> groupeContrats = new HashSet<GroupeContrat>(0);
    ...
    Dans mon action, j'ai la liste de tous les groupes possibles, ainsi que la liste des groupes de l'utilisateur au format "list" et non "map". En effet, j'avais vu dans l'utilsiation des input qu'on ne pouvait pas itérer sur une map car non indexé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	private List<GroupeContrat> listeGroupeContrats ;
    	private ArrayList<GroupeContrat> utilisateurGroupesContratList = new ArrayList<GroupeContrat>();
    Dans la jsp,
    si je fait ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <s:checkboxlist list="listeGroupeContrats" name="utilisateurGroupesContratList" 
    	label="%{getText('label.utilisateur.groupeContrats')}" 
    />
    --> j'ai ma liste de l'ensemble des groupe de contrat.
    --> seul les contrats présent dans "utilisateurGroupesContratList" (les contrats de l'utilisateurs) sont sélectionnés : c'est ce que je veux
    ==> Par contre, les libellé sont "cont.hibernate.GroupeContrat@18ba2b6b", ce qui n'est pas ce que je veux
    Le html généré est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <div class="checkbox">
            <label for="utilisateurGroupesContratList-3" class="checkbox">
                <input type="checkbox" name="utilisateurGroupesContratList" value="cont.hibernate.GroupeContrat@18ba2b6b" id="utilisateurGroupesContratList-3">            cont.hibernate.GroupeContrat@18ba2b6b            </label>
    </div>
    <div class="checkbox">
            <label for="utilisateurGroupesContratList-5" class="checkbox">
                <input type="checkbox" name="utilisateurGroupesContratList" value="cont.hibernate.GroupeContrat@22222" id="utilisateurGroupesContratList-5">            cont.hibernate.GroupeContrat@22222      </label>
    </div>
    Afin d'afficher les libellés, j'ai donc essayé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <s:checkboxlist list="listeGroupeContrats" name="utilisateurGroupesContratList" 
    	label="%{getText('label.utilisateur.groupeContrats')}"  
    	listKey="grpId" listValue="%{grpCode +' - '+ grpLibelle}"    />
    Le html généré est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div class="checkbox">
            <label for="utilisateurGroupesContratList-3" class="checkbox">
                <input type="checkbox" name="utilisateurGroupesContratList" value="3" id="utilisateurGroupesContratList-3">            aa - aaa        </label>
    </div>
    <div class="checkbox">
            <label for="utilisateurGroupesContratList-5" class="checkbox">
                <input type="checkbox" name="utilisateurGroupesContratList" value="5" id="utilisateurGroupesContratList-5">        cc - cccc        </label>
        </div>
    --> Mon affichage est donc correct
    --> le value=3 correspond bien au libellé affiché
    ==> Par contre, les contrats de l'utilisateur (présent dans utilisateurGroupesContratList) ne sont plus coché par défaut
    ==> à la validation, la liste ne contient pas l'ensemble des ééments coché si il y en avait plusieurs de coché


    La seule méthode que j'ai trouvé pour valider correctement la sélection (et donc faire correctement l'enregistrement dans l'action) est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <s:checkboxlist list="listeGroupeContrats" name="utilisateurGroupesContratList.grpId" 
    	label="%{getText('label.utilisateur.groupeContrats')}"  
    	listKey="grpId" listValue="%{grpCode +' - '+ grpLibelle}"    />
    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <div class="checkbox">
            <label for="utilisateurGroupesContratList.grpId-3" class="checkbox">
                <input type="checkbox" name="utilisateurGroupesContratList.grpId" value="3" id="utilisateurGroupesContratList.grpId-3">        aa - aaa        </label>
        </div>
    <div class="checkbox">
            <label for="utilisateurGroupesContratList.grpId-5" class="checkbox">
                <input type="checkbox" name="utilisateurGroupesContratList.grpId" value="5" id="utilisateurGroupesContratList.grpId-5">        cc - cccc        </label>
        </div>
    --> L'affiche est correct
    --> A la validation, j'obtiens bien une liste "utilisateurGroupesContratList" qui contient les objets 'groupe de contrat" qui ont été sélectionnés dans lequel le grpId est alimenté.
    ==> Par contre, les éléments ne sont pas sélectionnés par défaut lorsque "utilisateurGroupesContratList" contenait des éléments lors de l'arrivée sur la page



    --> Sauriez vous donc comment faire?
    Car je ne trouve vraiment pas. La seule chose que je remarque, c'est que ca fonctionne facilement si on travaille simplement avec des string, mais pas avec des objets plus complexe


    Merci d'avance.
    Dernière modification par Invité ; 29/10/2015 à 12h26.

Discussions similaires

  1. Big Data, Cloud et Internet des Objets sont-ils encore des objets de débats ?
    Par Gordon Fowler dans le forum Débats sur le développement - Le Best Of
    Réponses: 0
    Dernier message: 22/05/2013, 13h04
  2. Excel > ppt : des tableaux et non pas des graphes
    Par nat54 dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 14/11/2008, 08h38
  3. Mapper des colonnes et non pas des lignes
    Par trotters213 dans le forum Hibernate
    Réponses: 4
    Dernier message: 30/04/2008, 15h25
  4. [RSS] des forums et non pas des post !
    Par afrodje dans le forum Evolutions du club
    Réponses: 17
    Dernier message: 19/02/2008, 17h56
  5. Réponses: 1
    Dernier message: 05/07/2007, 14h48

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