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

Spring Web Java Discussion :

[Spring MVC] Methode de SimpleFormController


Sujet :

Spring Web Java

  1. #1
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut [Spring MVC] Methode de SimpleFormController
    Salut,
    J'ai une zone texte qui peut être nulle et qui fait référence à des entiers. si je ne remplis pas cette zone ,elle va contenir "" (c'est un string) j'ai donc une erreur de conversion qui est lancée.
    Ce que je voudrais faire c'est intercepté cette valeur avant que la conversion soit faite, comme ça je pourrais mettre à la place de "" un 0.
    J'ai essayé de l'intercepter dans onSubmit mais c'est trop tard, dans le validateur aussi.
    Est ce qu'il y a une methode qui est appelé par le controleur au moment de la soumission du formulaire.

    Merci

  2. #2
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par Esil2008
    Salut,
    J'ai une zone texte qui peut être nulle et qui fait référence à des entiers. si je ne remplis pas cette zone ,elle va contenir "" (c'est un string) j'ai donc une erreur de conversion qui est lancée.
    Ce que je voudrais faire c'est intercepté cette valeur avant que la conversion soit faite, comme ça je pourrais mettre à la place de "" un 0.
    J'ai essayé de l'intercepter dans onSubmit mais c'est trop tard, dans le validateur aussi.
    Est ce qu'il y a une methode qui est appelé par le controleur au moment de la soumission du formulaire.

    Merci

    et en mettant par défaut la valeur 0 dans ta zone de texte ?
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  3. #3
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Salut,
    merci pour ta reponse, c vrai c'est une solution. pour moi c vraiment le dernier recours, car j'ai le même probléme avec les dates (il y a des dates qui sont pas obligatoires)

    Merci

  4. #4
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Tu peux rajouter des binder via la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void initBinder(HttpServletRequest request,
                ServletRequestDataBinder binder) throws Exception {
            super.initBinder(request, binder);
            binder.registerCustomEditor(java.lang.Integer.class,
                    new CustomNumberEditor(java.lang.Integer.class, true));
     
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     binder.registerCustomEditor(java.lang.Integer.class,
                    new CustomNumberEditor(java.lang.Integer.class, nf, true))
    Spécifie que tu rajoute un editeur ( convertisseur String -> Object ) pour les Integer et que le champ peut etre null.
    Il faut déclaré dans ton objet command un Integer et non un int ( j'ai jamais teste avec les int ).

    Et normalement si tu passe un champ vide ( "" ), l'integer devrait etre null.

    Pareil pour les date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");
     binder.registerCustomEditor(java.lang.Integer.class,
                    new CustomDateEditor(df, true))
    Voila
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  5. #5
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Merci bien je vais essayer ça, je te tiens au courant.
    ça cause aucun probléme avec mon binder ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    protected void initBinder(HttpServletRequest request,
    			ServletRequestDataBinder binder) throws Exception {
    		// format attendu pour la date de naissance
    		SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    		// format strict
    		dateFormat.setLenient(false);
    		// on enregistre un éditeur de propriétés String (dd/MM/yyyy) -> Date
    		// CustomDateEditor est fourni par Spring - il sera utilisé par Spring
    		// pour transformer
    		// la chaîne saisie dans le formulaire en type java.util.Date
    		// la date ne pourra être vide (2ième paramètre de CustomDateEditor)
    		binder.registerCustomEditor(java.util.Date.class, null,
    				new CustomDateEditor(dateFormat, false));
    	}
    merci

  6. #6
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Salut,

    je peux savoir comment tu as initialiser le nf ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     binder.registerCustomEditor(java.lang.Integer.class,
                    new CustomNumberEditor(java.lang.Integer.class, nf, true))
    merci

  7. #7
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Oups j'ai été trop vite pour l'exemple avec la date ;-)

    C'est le tien qui est bon ( vu que dans mon exemple pour la date je demande de crée un binder de date pour la classe Integer )

    Le seul truc a changer dans ton binder je pense est de passe de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    binder.registerCustomEditor(java.util.Date.class, null,
    				new CustomDateEditor(dateFormat, false));
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    binder.registerCustomEditor(java.util.Date.class, null,
    				new CustomDateEditor(dateFormat, true));
    Afin de gérer les chaines vides ( qui devrait donne une Date null ).


    Pour le nf, il n'est pas obligatoire, c'est si tu veux spécifié un NumberFormat, sinon il prends le NumberFormat par défaut.

    Sinon pour l'initialiser en français :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  8. #8
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Salut ,

    Merci bien ça marche de toute façon sans le nf.
    Merci beaucoup , je vais essayer pour les dates.
    merci encore

  9. #9
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Ok,
    Merci ça marche nikel.
    à la prochaine

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

Discussions similaires

  1. [Security] [Spring MVC] Method front
    Par Zenklys dans le forum Spring
    Réponses: 0
    Dernier message: 10/03/2011, 20h52
  2. [Spring MVC] Problèmes avec SimpleFormController"s"
    Par SuperGandalf dans le forum Spring Web
    Réponses: 2
    Dernier message: 13/06/2007, 10h38
  3. [Spring MVC] SimpleFormController + checkbox
    Par sothea dans le forum Spring Web
    Réponses: 3
    Dernier message: 15/05/2007, 23h22
  4. [Spring MVC] problème SimpleFormController
    Par sothea dans le forum Spring Web
    Réponses: 1
    Dernier message: 15/05/2007, 17h38
  5. Réponses: 2
    Dernier message: 16/02/2006, 10h29

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