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 :
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 :
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 :
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 :
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 :
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.
Partager