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 :

JSF validator, null problem


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut JSF validator, null problem
    salut,
    dans ma page jsf j'utilise un validator sur un inputText:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <h:inputText
    	id="line1"
    	value="#{terminalForm.line1}"
    	maxlength="24" 
    	onkeyup="lengthHL1()" 
    	required="true"
    	validator="#{terminalForm.checkLine1}"/>
    Mon champ est obligatoire (required), j'utilise le validator pour afficher un message personnalisé et pour gérer l'insertion des espaces.

    Mon validator est donc le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	public void checkLine1(FacesContext context, 
    			 UIComponent component, 
    			 Object object) 
    			 throws ValidatorException {
     
    		String var = object.toString();
    		var = (var != null)? var=var.trim():"";
     
    		if(var.length()==0){
    		throw new ValidatorException(
    			new FacesMessage("Line 1: Value is required.", null));
    	}
    Mon problème est au moment du rechargement du formulaire, quand l'inputText est vide est qu'on a cliqué sur mon bouton sauvegarder.
    Si je lance le programme en mode debug, je constate que les fonctions get sont appelées une première fois avec des valeurs null, ensuite un deuxième fois avec les bonnes valeurs.
    Cela me cause des problèmes dans certaines fonctions get ou j'effectue des opérations sur les valeurs avant de les afficher!

    Pourquoi mon programme réagit comme ça? C'est un problème de mon code ou c'est jsf qui fonctionne comme ça? Il y a moyen pour l'éviter ou bien je dois mettre des conditions de not null sur mes fonctions (cela ne m'arrange pas trop..)?

    Si ce n'est pas claire, posez moi des questions svp!
    Merci pour toute réponse

  2. #2
    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 ajouter un validator pour refaire le required de JSF, si la validation est compliquée et qu'elle n'existe pas en JSF oui tu peux le faire, mais, pour valider un input non vide pa, ce n'est pas utile.
    si il s'agit de mettre un message personnalisé, la réponse est disponible dans la faq.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut
    Le required ne gère pas l'insertion des espaces...je ne veux pas que l'utilisateur puisse rentrer une chaine vide, ou une chaine d'espaces...
    c'est pour ça que j'utilise le .trim() dans mon validator.

    Mais le problème n'est pas la, car même si j'enlève le validator, le required a le même comportement.
    Les fonctions de get sont appelée 2 fois pour recharger la page avec l'erreur, la première fois avec des valeurs null et ça ne m'arrange pas trop...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 54
    Par défaut
    Les getters sont appelé plusieurs fois dans le cycle d'un page affichée, c'est donc normal que tu aie plusieurs appel. A chaque fois que JSF a besoin de value, il va l'évaluer.


    Ensuite, je comprend pas trop ton problème de null. Si pendant le getter la valeur retournée est null, c'est parce que ton bean l'a définie à null, c'est absolument pas la faute à JSF. Quand aux setters, tant que toutes les données ne sont pas valides, il ne seront pas appelés par JSF.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut
    Merci pour la réponse, je commence à comprendre un peut mieux. Est-ce qu'il y a une doc claire qui explique les cycles des pages quelque part?

    J'ai encore un petite doute, pourquoi dans le même cycle une même valeur est retournée une première fois null, et la deuxième avec sa valeur?

    Donc, si j'ai bien compris, il suffit tout simplement de bien initialiser les variables?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 54
    Par défaut
    parce que tu a changé les valeur de ton bean entre deux :/ On ignore tout de ton bean, comment tu l'initialise, d'ou il viens, comment il se comporte, etc

    Pour les cycle, tu trouvera ça dans tous cours de base de JSF

    http://www.ibm.com/developerworks/library/j-jsf2/

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Voila la doc complete JSF

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut
    ok!

    Merci beaucoup pour toutes les réponses, je vais lire la doc et creuser encore un peut dans mon code!
    Si jamais je reviendrais avec d'autres questions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSF] Validator - Comparaison
    Par gufra dans le forum JSF
    Réponses: 12
    Dernier message: 22/12/2010, 17h17
  2. JSF validator, null problem, second round
    Par Bobble dans le forum JSF
    Réponses: 21
    Dernier message: 26/07/2010, 15h50
  3. JSF managed property probleme
    Par Loizo dans le forum JSF
    Réponses: 9
    Dernier message: 06/03/2009, 10h22
  4. [10g2]Update mise à NULL Probleme
    Par lunab54 dans le forum SQL
    Réponses: 6
    Dernier message: 15/11/2007, 18h32
  5. [validation HTML probleme avec li
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 18/02/2006, 13h27

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