Bonjour,

J'ai un soucis avec la récupération des données au sein d'une selectManyCheckbox. Le code est pourtant minimaliste... Je définis la selectManyCheckbox :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<t:selectManyCheckbox id="listDroits" binding="#{backingAdmin_gestionDroits.listDroits}" value="#{backingAdmin_gestionDroits.selectedDroits}" layout="pageDirection">
	<t:selectItems value="#{backingAdmin_gestionDroits.droits}" var="d" itemValue="#{d.id}" itemLabel="#{d.nom}"/>
	<f:converter converterId="javax.faces.Long" />
</t:selectManyCheckbox>
Avec pour la récupération des éléments :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
	public List<Droit> getDroits() {
		DroitDAO dDAO = new DroitDAO();
		List<Droit> res = dDAO.getBy("id", "asc");
 
		return res;
	}
J'ai un bouton qui lance une méthode devant récupérer les données cochées de la liste de box et les afficher tout bêtement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
	public String modif() {
 
		Object[] sDroits = this.getListDroits().getSelectedValues();
		System.out.println(sDroits.toString());
 
		return "#";
	}
Mais voila, lorsque je clique sur le bouton, je recois l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast to [Ljava.lang.Object;
	at javax.faces.component.UISelectMany.getSelectedValues(UISelectMany.java:85)
	at backingAdmin.BackingGestionDroits.modif(BackingGestionDroits.java:54)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
La ligne posant soucis étant la suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Object[] sDroits = this.getListDroits().getSelectedValues();
D'après la doc, "getSelectedValues" renvoie bien un "Object[]", je ne vois donc pas où il essaye de caster une ArrayList en Object[]. Je bloque... Si quelqu'un sait faire cela, je suis preneur.

Accessoirement, un autre petit soucis : les cases à cocher apparaissent à droite du texte label, je préfèrerais qu'elles apparaissent à gauche pour un alignement vertical plus homogène, j'ai pas réussi à trouver malgré des recherches... Là encore, merci d'avance pour vos conseils.