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

JSF Java Discussion :

[Richfaces]Validator sur OrderingList


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 42
    Par défaut [Richfaces]Validator sur OrderingList
    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.

    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"));
    				}
    			}
    		}
    	}
    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.
    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

  2. #2
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 42
    Par défaut
    Je me suis mal expliqué ou c'est que personne n'a de petites idées ???

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 42
    Par défaut
    Si je rajoute un bout de code en plus cela vous aidera t il??
    Il s'agit de mon orderingList dans ma jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <h:outputLabel value="Compétences techniques : " />
    				<rich:orderingList id="technicalSkills"
    					selection="#{helloWorld.employee.technicalSkills}"
    					value="#{applicationBean.technicalSkillsList}"
    					var="technicalSkills" listHeight="50" listWidth="150"
    					controlsType="none" validator="validateTechnicalSkill">
    					<rich:column>
    						<h:outputText value="#{technicalSkills}" />
    					</rich:column>
    				</rich:orderingList>
    				<rich:message for="technicalSkills" showDetail="true"
    					styleClass="erreur" />
    Sinon si vous avez un composant qui pourrait avoir le même rendu : une liste à choix multiple... J'ai essayé avec le <h:selectManyListbox> mais le problème est que soit il affiche une liste longue de tous les éléments(dès qu'il y en a un peut trop çà devient énorme ), soit une ligne. J'aimerai bien un compromis de 3/4 lignes...

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Pourquoi tu te complique la vie,

    il suffit lors de la sélection vérifier si tu as dépasser le nombre d'éléments voulus.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 42
    Par défaut
    Bonjour,

    Concretement comment je vérifie que j'ai dépassé le nombre d'éléments voulus? Quand tu dis lors de la sélection, tu penses à du Javascript? Moi je pensais au validator mais je n'arrive pas à récupérer les éléments sélectionnés dans le validator...

    Ma solution provisoire est pour le moment après le clique sur le bouton de validation de mon formulaire je teste le nombre d'éléments sélectionnés dans mon bean : si ok je passe à l'enregistrement dans ma base de données et sur une page de confirmation, sinon je réaffiche mon formulaire avec un message que j'affiche tout en haut de mon formulaire rattaché à mon composant form (en effet si je lie le message à mon composant orderingList, le message n'est pas affiché...).
    Cela fait que ma fonction d'enregistrement fait de la vérification...J'aimerais que cette validation se fasse en amont.

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    je ne parle pas du javascript, de l'ajax, lorsque tu sélectionne un élément, il y'a une requete ajax, tu peux utilser a4j:support:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a4j:support event="onorderchange" action="{bean.checkSelection}" />

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/05/2013, 16h19
  2. [VB NET2002] Créer un setup valide sur tout type de machine ?
    Par magic8392 dans le forum Installation, Déploiement et Sécurité
    Réponses: 5
    Dernier message: 29/04/2006, 09h44
  3. Réponses: 3
    Dernier message: 09/04/2006, 09h10
  4. [JDBC] Opération non valide sur un ensemble
    Par marti dans le forum JDBC
    Réponses: 2
    Dernier message: 13/10/2005, 19h17
  5. [Exception]Lors d'un validate sur un jframe
    Par cameleon2002 dans le forum Agents de placement/Fenêtres
    Réponses: 12
    Dernier message: 02/05/2005, 11h27

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