Bonjour,
Je viens vers vous pour faire appel à votre expérience et vos connaissances. Je travaille avec RichFace 3.3.3 Final, JSF 1.2, JBoss 4.2,et Java 5
Voici mon problème: J'ai un formulaire qui contient plusieurs champs. L'un d'entre eux est un rich:orderingList. Mon besoin est de limiter le nombre d'élements sélectionnés par l'utilisateur ou afficher un message d'erreur lorsque l'utilisateur sélectionné plus de 15 éléments! J'ai donc créer un validator.
Je rentre bien dans le validator mais le problème est que je ne peux pas récupérer la liste sélectionnée par l'utilisateur.
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 void validateTechnicalSkill(FacesContext context, UIComponent component, Object value) throws ValidatorException { if (component instanceof HtmlOrderingList) { Object o = ((HtmlOrderingList)component).getSubmittedValue(); if (o instanceof UIOrderingList) { int size = ((UIOrderingList)o).getSelection().size(); // User cannot selects more than 15 element if (size > 15) { throw new ValidatorException(new FacesMessage( FacesMessage.SEVERITY_ERROR, "Limite dépassée", "Le nombre de compétences dépasse la limite de 15")); } } } }
La méthode SubmittedValue(); retourne un type "Object" qui est de type UIOrderingList$SubmittedValue (je le vois en mode debug) hors je ne peux rien faire avec...
En effet étant dans la phase de validation le modèle n'est pas mis à jour et je ne peux donc récupérer ma sélection avec .getSelection(), l'argument Object value contient la liste des éléments présentés à l'utilisateur (chose qui n'est pas liée à la phase de validation mais je savais pas où le mettre)...
Dans le code du validateur mon Object o n'est pas de type UIOrderingList et je ne peux avoir accès au type UIOrderingList$SubmittedValue qui n'est pas reconnu!
Ma question est comment puis je résoudre mon problème?? Je suis ouvert à une autre approche du problème (genre option que je n'aurais pas vu dans le rich:orderinglist, ne pas utiliser de validator...)
Merci par avance pour votre lecture et votre aide![]()
Partager