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 :

validation saisie de date en fonction de la locale


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut validation saisie de date en fonction de la locale
    Bonjour,

    Je cherche actuellement une solution pour la saisie de dates dans un formulaire. Actuellement un javascript vérifie le format de ma date avant la validation du formulaire.

    Avec l'internationalisation de l'application, le format de la date sera différent suivant la langue. Du coup cela implique chargement d'un javascript différent (ce qui est possible !!!) .Chaque javascript (propre à une langue) possèdant son propre type de vérification.Mais je préfèrerais une solution java avec struts. Serait-il possible avec struts de faire un contrôle de saisie sur la date avant validation du formulaire ? et que ce controle soit différent en fonction de la langue?

  2. #2
    Expert confirmé

    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
    Par défaut
    Apparemment, il existe une solution avec le Validator.

    Dans le fichier validation.xml, tu peux définir un formset pour chaque locale.
    Et dans chaque formset, tu peux définir le format que doit respecter la date en fonction de la locale.

    Cela donnerait quelque chose du style :
    Code xml : 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
    19
    20
    21
    22
    <formset language="fr">
       <form name="nomDuFormBean">
        <field property="maDate" depends="required,date">
            <arg position="0" key="key.maDate"/>
            <var>
             <var-name>datePatternStrict</var-name>
             <var-value>dd/MM/yyyy</var-value>
            </var>
        </field>
       </form>
    </formset>
    <formset language="en">
       <form name="nomDuFormBean">
        <field property="maDate" depends="required,date">
            <arg position="0" key="key.maDate"/>
            <var>
             <var-name>datePatternStrict</var-name>
             <var-value>MM/dd/yyyy</var-value>
            </var>
        </field>
       </form>
    </formset>
    A adapter à ton cas et à tester.

  3. #3
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    L'idée est bonne, mais ce n'est pas tout à fait ce que j'attend.
    Avec le validator, pour effectuer la validation du champ il faut cliquer sur le boutton submit du formulaire, or dans mon cas, je veux que ce soit en fonction de la saisie dans le champ texte. Et à la fin e la saisie notamment, donc avant la validation du formulaire !!

    Ce qui m'empèche d'utiliser la méthode du validatir car le javascript est appelé sur le onSubmit du formulaire.

    Il me faudrait une autre solution.

  4. #4
    Expert confirmé

    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
    Par défaut
    Mais tu peux très bien provoquer la soumission du formulaire ou seulement la validation sur l'évènement onchange du tag html:text.

  5. #5
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    en effet c'est possible, je suis donc en train de mettre en place le validator de struts. J'ai insérer l'appel au plugin dans struts config, désormais je bloque sur le validator-rules.xml. Pour faire une validation de date je suppose que je dois mettre quelque chose de précis ? je suis un peu perdu

  6. #6
    Expert confirmé

    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
    Par défaut
    Il faut prendre le validator-rules.xml livré avec la version de Struts que tu utilises.
    Par contre, c'est dans le fichier validation.xml que tu dois définir les champs que tu veux valider via le Validator, comme dans l'exemple que je t'ai donné.
    En plus du code exemple, il faut mettre les balises formset dans une balise <form-validation> et référencer la dtd par exemple comme ceci :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="ISO-8859-1" ?>
     
    <!DOCTYPE form-validation PUBLIC
       "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
       "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
     
    <form-validation>
      <formset ...>
       ...
      </formset>
    </form-validation>
    Dans la balise DOCTYPE, il faut que tu références la dtd du Validator qui est livré avec la version de Struts que tu utilises.

  7. #7
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    ok ça je viens de le faire mon validator-rules.xml est ok et mon validation.xml aussi.

    Maintenant je dois modifier ma jsp ? je dois déclencher l'action sur le on change de mon html:Text ?

    et apres comment le lien est fait avec le fichier de validation.xml ?

  8. #8
    Expert confirmé

    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
    Par défaut
    Dans le fichier validation.xml, as-tu bien spécifié le nom de ton form-bean dans l'attribut name de la balise form et le nom de la propriété correspondant à la date dans l'attribut property de la balise field ?

    Sinon, ton ActionForm doit hériter de ValidatorForm.

    Et enfin, dans la jsp, pour activer la validation Javascript du Validator, il faut ajouter ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:javascript formName="nomDuFormBean"/>
    et soumettre la validation dans l'évènement onchange comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text property="maDate" onchange="return validateNomDuFormBean(nomDuFormBean);"/>

  9. #9
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    ok je suis ok partout !! par contre je me pose une question bête comment je sais si le plug-in validator est installé ? car là j'ai juste créé mes fichiers validator-rules.xml et validation.xml ! le plug-in est sous form de jar ? car dans mon appli j'ai le jar : commons-validator.jar !

  10. #10
    Expert confirmé

    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
    Par défaut
    Le plugin est dans le jar de Struts donc, si tu l'as bien défini dans le struts-config.xml, il sera automatiquement chargé au démarrage de l'appli.

  11. #11
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    donc ça c'est ok !
    par contre j'ai un souci avec le <html:javascript >
    en fait sur ma page il m'affiche un bout de code javascript contenu ds mon validator-rules.xml !

  12. #12
    Expert confirmé

    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
    Par défaut
    Peux-tu montrer le code de la jsp ?

  13. #13
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    Le problème est résolu ! désormais lorsque je saisie une date je rentre dans ma fonction javascript situé dans mon validation-rules.xml !
    Maintenant je veux que cette date soit dans le format défini dans mon validation.xml ; comme dois je m'y prendre?

  14. #14
    Expert confirmé

    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
    Par défaut
    Citation Envoyé par Watier_53 Voir le message
    désormais lorsque je saisie une date je rentre dans ma fonction javascript situé dans mon validation-rules.xml !
    Je ne comprends pas bien pourquoi tu dis ma fonction Javascript dans mon validation-rules.xml.
    Tu as créé ta propre fonction javascript ? Je n'en vois pas l'intérêt étant donné que cette fonction existe déjà dans le fichier validator-rules.xml livré avec Struts.
    A aucun moment dans la discussion il n'a été question de créer ta propre règle de validation.

    Citation Envoyé par Watier_53 Voir le message
    Maintenant je veux que cette date soit dans le format défini dans mon validation.xml ; comme dois je m'y prendre?
    Si tu utilises le fichier validator-rules.xml livré avec Struts sans le modifier et que, dans le fichier validation.xml, tu fais référence à la règle date dans l'attribut depends de la balise field de ton champ date, le Validator exécutera la fonction Javascript correspondante et vérifiera que la date saisie correspond bien au format indiqué dans le fichier validation.xml.

  15. #15
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    en fait le validator-rules.xml est un fichier que j'ai récupéré de mon entreprise utilisé sur un autre projet :
    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
    19
    20
    21
     
    <validator name="date"
                  class="org.apache.struts.validator.FieldChecks"
                  method="validateRechercheForm"
                  methodParams="java.lang.Object,
                                        org.apache.commons.validation.ValidationAction,
                                        org.apache.commons.validation.Field,
                                        org.apache.struts.action.ActionErrors,
                                        javax.servlet.http.HttpServletRequest"
                   depends=""
                   msg="errors.date"
                   jsFunctionName="DateValidations">
     
                   <javascript><![[CDATA[
                              function validateRechercheForm(form){
                                            ........
                              }
                   ]]>
                   </javascript>
     
    </validator>

  16. #16
    Expert confirmé

    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
    Par défaut
    Pour pouvoir bénéficier de la validation d'une date via le Validator avec un format différent suivant la locale, je te conseille d'utiliser le validator-rules.xml livré avec Struts, et donc les fonctions Javascript et/ou Java du Validator.
    Il est inutile de coder sa propre fonction Javascript puisque ça existe déjà dans le Validator.

    En Struts 1.3.8, le fichier validator-rules.xml étant présent dans le jar struts-core-1.3.8.jar, tu n'as pas besoin de copier le fichier validator-rules.xml sous WEB-INF.
    Tu peux directement référencer celui présent dans le jar en codant ceci dans le struts-config.xml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>
    Ensuite, lorsque tu valideras ton formulaire, c'est la fonction Javascript du Validator correspondant à la validation d'une date qui sera exécutée et comme tu as codé un format spécifique suivant la langue dans le fichier validation.xml, il vérifiera que le format de la date saisie correspond bien à celui attendu.

    EDIT : En fait, je parle de Struts 1.3.8 sans savoir quelle version de Struts tu utilises. Désolée, j'ai confondu avec une autre discussion.
    Si tu n'es pas en Struts 1.3.8, il faut récupérer le fichier validator-rules.xml livré avec ta version de Struts et le copier sous WEB-INF et le référencer comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames"
            value="/WEB-INF/validator-rules.xml,
                   /WEB-INF/validation.xml"/>
    </plug-in>

  17. #17
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    ok je comprends mieux ! du coup dans validation.xml, la balise field a un attribut depends. Ce depends dépend en fait du validator implémenté par struts pour les date c'est ça? si oui il ne me reste plus qu'a trouvé son nom !

  18. #18
    Expert confirmé

    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
    Par défaut
    Mais je t'ai donné au début de la discussion un exemple de validation.xml pour valider un champ date.
    La règle de validation est tout simplement date, comme dans mon exemple :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
        <field property="maDate" depends="required,date">

    EDIT : Peux-tu montrer ce que tu as codé dans ton fichier validation.xml parce que là, je crois qu'on ne va pas s'en sortir ?

  19. #19
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    oui mais cette exemple me met l'erreur suivante :

    depends String "required" was note found in validator-rules.xml de même pour date

  20. #20
    Expert confirmé

    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
    Par défaut
    Sans doute parce que tu n'as pas pris le fichier validator-rules.xml livré avec Struts, contrairement à ce que je t'ai conseillé au début de la discussion.
    Les règles de validation required et date sont définies dans le fichier validator-rules.xml.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [WD17] Masque date pour fonction saisie()
    Par jcpas dans le forum WinDev
    Réponses: 8
    Dernier message: 07/02/2012, 14h19
  2. Saisie de date et validation
    Par Cram_N7 dans le forum Struts 2
    Réponses: 10
    Dernier message: 17/08/2009, 10h12
  3. validation date en fonction de la locale
    Par Watier_53 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/10/2008, 10h20
  4. Saisie des dates
    Par J-P-B dans le forum XMLRAD
    Réponses: 5
    Dernier message: 04/07/2003, 11h08
  5. Réponses: 3
    Dernier message: 19/03/2003, 15h19

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