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

Struts 1 Java Discussion :

[STRUTS][VALIDATOR] Validation de dates


Sujet :

Struts 1 Java

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut [STRUTS][VALIDATOR] Validation de dates
    Bonjour à tous,

    je valide mes dates via le plugin validator fourni pas Struts, voici l'extrait de mon fichier de validation.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       <field property="dateFonction" depends="date">
          <arg key="prompt.date.acquisition.fonction"/>
    	<var>
    	   <var-name>datePattern</var-name>
    	      <var-value>$&#123;myDatePattern&#125;</var-value>
    	   </var>
       </field>

    avec "myDatePattern" défini dans les constantes globales de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       <constant>
          <constant-name>myDatePattern</constant-name>
          <constant-value>dd.MM.yyyy</constant-value>	
       </constant>
    Ainsi tout ce passe parfaitement dans le cas de base, seulement, je voudrait pouvoir saisir le symbole "*" dans le champs.

    En gros, je voudrait avoir soit une date, soit un "*", comment puis je faire?

    PS: je pourrai definir un masque de saisie mais je perdrais alors la puissance de la validation des dates fournis par Struts (qui prend en comte les années bissextiles...)

    Si vous avez des idées je suis preneur...

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    J'ai mis le problème de coté en espérant trouver une solution

    La mise en place d'un masque de saisie en remplacement ne fonctionne pas comme je le souhaite, en effet la valeur saisie est ensuite passée en paramètre à une méthode permettant de faire une requête en base via Hibernate => faire une recherche ou la date = 31.02.2005 (date invalide) provoque une erreur, il faut donc que je conserve la validation de dates fournie par Struts

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  3. #3
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Bonjour ,

    Ne pourrais-tu pas combiner le validator et la validation java en codant donc une méthode validate dans ta ValidatorForm avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActionErrors errors = super.validate&#40;mapping,request&#41;;
    Plus un test si la date est égale à *. Si c'est le cas, supprimer le message d'erreur généré par le validator, si toutefois cela est possible. Je n'ai pas l'API sous la main pour vérifier.

    Ou faire le super.validate seulement si la date est différente de *, si toutefois tu n'utilises le validator que pour la date !

    C'est une idée mais peut-être qu'elle est irréalisable ou complètement idiote !

    Tiens-moi au courant.
    Modératrice Java - Struts, Servlets/JSP, ...

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    ben ma validation ne s'effectue pas coté server, c'est bien ca le problème, le validator Struts me genère du javascript coté client... et je n'ai pas envie de toucher aux sources js de Struts.

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  5. #5
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Je me suis sans doute mal expliquée mais si tu codes une méthode validate() dans ta ValidatorForm et que tu ne fais appel à super.validate (soit le Validator Struts) que si la date est différente de *, le validator Struts ne sera appelé que dans ce cas-là.

    Je viens de faire le test suivant sur ma ValidatorForm de login :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public ActionErrors validate&#40;ActionMapping mapping,HttpServletRequest request&#41;
    &#123;
        ActionErrors errors = null ;
        if &#40; ! identifiant.equals&#40;"*"&#41;&#41;
        &#123;
         errors = super.validate&#40;mapping,request&#41;;
        &#125;
        return errors ;
    &#125;
    avec dans mon fichier validation.xml un required sur identifiant et mot de passe.
    Et donc, si je saisis * dans identifiant, il ne vérifie pas le required sur le mot de passe et forward sur la page suivante.

    Il est vrai que ceci ne peut être valable pour toi que si tu n'as que la date à valider via le Validator Struts.
    Modératrice Java - Struts, Servlets/JSP, ...

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    ok j'ai compris je vais tester ca, merci du coup de pouce

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  7. #7
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    pourquoi ne pas ecrire ton propre controle ?

    que tu defini ensuite dans le validation.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
          <validator name="url"
                classname="maClasseDeControle"
                   method="dateCritere"
             methodParams="java.lang.Object,
                           org.apache.commons.validator.ValidatorAction,
                           org.apache.commons.validator.Field,
                           org.apache.struts.action.ActionMessages,
                           javax.servlet.http.HttpServletRequest"
                  depends=""
                      msg="errors.date"/>

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par fnobb
    pourquoi ne pas ecrire ton propre controle ?

    que tu defini ensuite dans le validation.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
          <validator name="url"
                classname="maClasseDeControle"
                   method="dateCritere"
             methodParams="java.lang.Object,
                           org.apache.commons.validator.ValidatorAction,
                           org.apache.commons.validator.Field,
                           org.apache.struts.action.ActionMessages,
                           javax.servlet.http.HttpServletRequest"
                  depends=""
                      msg="errors.date"/>
    oui ca je l'ai fait pour vérifier que deux date se suivent, il faut ecrire une classe, et ecrire du javascript dans la validation.xml pour que le tout opère coté client...

    Je n'ai pas gardé ce choix par manque de temps mais je vais peut être y revenir...

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  9. #9
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    pour la partie java tu peux faire un test pour verifier si le caratère est * sinon tu appelle la validation de struts :

    FieldChecks.validateDate(bean, va, field, errors, request);

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    ok merci je pense passer a cette tâche d'ici 1h je vous tiens au courant

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par c_nvy
    Je me suis sans doute mal expliquée mais si tu codes une méthode validate() dans ta ValidatorForm et que tu ne fais appel à super.validate (soit le Validator Struts) que si la date est différente de *, le validator Struts ne sera appelé que dans ce cas-là.

    Je viens de faire le test suivant sur ma ValidatorForm de login :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public ActionErrors validate&#40;ActionMapping mapping,HttpServletRequest request&#41;
    &#123;
        ActionErrors errors = null ;
        if &#40; ! identifiant.equals&#40;"*"&#41;&#41;
        &#123;
         errors = super.validate&#40;mapping,request&#41;;
        &#125;
        return errors ;
    &#125;
    avec dans mon fichier validation.xml un required sur identifiant et mot de passe.
    Et donc, si je saisis * dans identifiant, il ne vérifie pas le required sur le mot de passe et forward sur la page suivante.

    Il est vrai que ceci ne peut être valable pour toi que si tu n'as que la date à valider via le Validator Struts.
    Dis moi lorsque tu as une erreur de validation, obtiens tu un pop (alert) javascript a l'ecran ou un ActionErrors?

    Parce que pour ma part j'ai un pop up et donc en mettant un breakpoint sur la première instruction de la méthode validate de mon ActionForm, je me rend compte que la méthode n'est jamais appelée (le js fait la validation via le onsubmit="validateMonForm(this);")

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  12. #12
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Mes erreurs de validation s'affichent sur la page via le <html:errors />, pas de pop-up.

    Je n'ai pas codé de onsubmit="validateMonForm(this);".

    Tu utilises une ActionForm dynamique je suppose ?
    Mon test n'était pas effectué avec une ActionForm dynamique.

    Je suppose aussi que tu as codé un validate="true" et un input dans l'action ?
    Modératrice Java - Struts, Servlets/JSP, ...

  13. #13
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par c_nvy
    Mes erreurs de validation s'affichent sur la page via le <html:errors />, pas de pop-up.

    Je n'ai pas codé de onsubmit="validateMonForm(this);".

    Tu utilises une ActionForm dynamique je suppose ?
    Mon test n'était pas effectué avec une ActionForm dynamique.

    Je suppose aussi que tu as codé un validate="true" et un input dans l'action ?
    je n'ai pas d'ActionForm dynamique, par contre j'ai laissé le validate à false et retiré le input attribute pour laisser le javascript agir

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  14. #14
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    j'ai laissé le validate à false et retiré le input attribute pour laisser le javascript agir
    Ceci explique pourquoi tu me disais que la validation s'effectuait côté client.
    Alors dans ce cas-là, effectivement, ma solution ne peut pas fonctionner.

    Désolée...
    Modératrice Java - Struts, Servlets/JSP, ...

  15. #15
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par c_nvy
    j'ai laissé le validate à false et retiré le input attribute pour laisser le javascript agir
    Ceci explique pourquoi tu me disais que la validation s'effectuait côté client.
    Alors dans ce cas-là, effectivement, ma solution ne peut pas fonctionner.

    Désolée...
    ca y est elle fonctionne, j'ai mis mon validate a false et l'input a "tile.montile"

    Merci

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  16. #16
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Merci aussi a toi aussi fnobb mais comme je te l'ai dis je n'ai pas le temps d'implémenter ta soluce qui me plaisait vraiment beaucoup


    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  17. #17
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    De rien.
    Contente de t'avoir rendu service
    Bon courage pour la suite.
    Modératrice Java - Struts, Servlets/JSP, ...

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

Discussions similaires

  1. Struts Validation avec plusieurs date pattern, HowTo ?
    Par didleur dans le forum Struts 1
    Réponses: 8
    Dernier message: 08/03/2006, 10h27
  2. Réponses: 3
    Dernier message: 15/03/2005, 13h22
  3. [STRUTS][Validation] - Validation dans un execute
    Par SEMPERE Benjamin dans le forum Struts 1
    Réponses: 8
    Dernier message: 07/12/2004, 11h55
  4. [ Struts ] pb Validator
    Par voodoo_mg dans le forum Struts 1
    Réponses: 7
    Dernier message: 01/07/2004, 09h11
  5. [ Struts ][ Validator ]validation côté serveur
    Par tiSioux dans le forum Struts 1
    Réponses: 4
    Dernier message: 29/06/2004, 10h25

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