Bonjour à tous,

Je viens de me mettre à Struts 2 et je souhaite faire appel à vous, car je n'ai rien trouvé sur le net ou dans des bouquins pour résoudre mon problème.

Point de vue métier, je souhaite affecter une ou plusieurs agences à un utilisateur. Et une agence pourra être affecté à un ou plusieurs utilisateurs. (Relation 0,n <-> 0,n).

J'ai fais mon mapping Hibernate qui fonctionne, à priori, mais mon problème ne se situe pas là.

Je rencontre des difficultés avec les checkboxlist,
à la création d'un utilisateur, j'affiche la liste des agences possibles (allAgences)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<s:checkboxlist label="Agences" name="agencesIds"				
		list="allAgences" listKey="id" listValue="libelle" />
Cela fonctionne et les agences sont bien affectées à l'utilisateur (si le formulaire est validé sans erreur)

Lors de la modification (ou si le formulaire n'est pas validé) j'aimerai récupérer la liste des agences qui ont déjà été affectées à l'utilisateur.
(Le post juste en dessous "Problème de sauvegarde des checkbox selectionnées sur une checkboxlist" ne pas aidé malheureusement)

Je pensais qu'un code de ce genre pourrais résoudre mon problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<s:checkboxlist label="Agences" name="agencesIds" value="agencesAffectees"		
		list="allAgences" listKey="id" listValue="libelle" />
Malheureusement ce n'est pas le cas, je ne peux initialiser qu'une seule checkbox en forçant manuellement value à une valeur (1, par exemple), dans ce cas la checkbox dont l'id=1 est bien coché, mais je n'arrive pas à cocher une liste complète de checkbox.


Dans la partie java :
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
 
public class Utilisateur {
	private int id;
	private String nom;
	private String prenom;
	private Set<Agence> agencesAffectees;
       ...
       public void setAgencesAffectees(Set agencesAffectees) {
		this.agencesAffectees = agencesAffectees;
	}
       public void setAgencesIds(Set agencesIds) {
		Iterator<?> it = agencesIds.iterator();
		DB db = new DB();
		while (it.hasNext()) {
			int id = Integer.parseInt((String) it.next());
			this.agencesAffectees.add((Agence) db.get(id, Agence.class));
		}
	}
Autre chose, je passe par les id de mes agences pour les ajouter à mon utilisateur, je vais récupérer mes objets selon leurs id, j'aimerai savoir s'il est possible d'ajouter directement les agences, j'ai une erreur lorsque j'aeesaye cette méthode : "invalid value for field agences"

P.S : Je n'ai peut être pas été très clair, n'hésitez à me poser des questions pour me faire avancer.

Merci d'avance.