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 ] Vérification de date


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut [ struts ] Vérification de date
    Bonjour,

    Je suis entrain de chercher comment vérifier qu'une date est valide mais malheureusement je n'y arrive pas!! J'essaye d'utiliser le validateur mais celui ci ne lève aucune erreur....

    voici le code utilisé

    validator-rules.xml:

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form name="demandeForm">
        <field property="dateDebut" depends="required,date">
            <var>
                <var-name>datePattern</var-name>
                <var-value>MM/dd/yyyy</var-value>
            </var>
        </field>
        <field property="dateFin" depends="required,date">
            <var>
                <var-name>datePattern</var-name>
                <var-value>MM/dd/yyyy</var-value>
            </var>
        </field>
    </form>
    Si quelqu'un a deja eu ce problème ou peut m'éclairer....

    Merci

  2. #2
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Tu as activé la validation JavaScript, ton formulaire étend ValidatorForm ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    Mon formulaire extends bien ValidatorForm.
    Quand tu parles de validation Java Script tu veux mentionner cette ligne dans la JSP <html:javascript formName="demandeForm" /> ? (mon formulaire s'appele demandeForm dans mon appli)

  4. #4
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Oui, ainsi que l'appel de la méthode validateDemandeForm générée.

    Eric

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    donc ca c'est le onsubmit="return validateDemandeForm();" que je place dans le <html:form> si je suis bien?

    Je test tout de suite....

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    Même avec le onsubmit="return validateDemandeForm()" je passe a travers :S

    Si quelqu'un a une solution miracle.....

  7. #7
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Et tu peux vérifier que dans le javascript généré il y a bien les contrôles ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    Excuses moi mais je suis débutant , donc tu fais comment pour vérifier que le code javascript contienne bien les contrôles?

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 204
    Par défaut
    le seul moyen que je connaisse pour debugger du javascrit est d utiliser la méthode alert("balbla"), dans alert tu peu mettre aussi une variable pour connaitre sa valeur

  10. #10
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Citation Envoyé par sebus
    Excuses moi mais je suis débutant , donc tu fais comment pour vérifier que le code javascript contienne bien les contrôles?
    Tu affiches la source à partir d'ie ou firefox

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    oki c bien ce qui me semblait mais j'étais pas sur de trouver le code javascript

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    je n'avais pas mis de code javascript dans ma page, je croyais que le Validator se "débrouillais" tout seul comme pour le required...... Du coup maintenant ca marche(j'ai une pop up qui s'affiche qd la date n'est pas bonne)

    Par contre comme je dois utiliser cette validation souvent dans pas mal de page pourrais tu me dire comment faire pour intégrer mon script java dans le rules-xml ou validation.xml? ou bien me rediriger vers une doc si possible explicite en français? car j'ai un exemple dans un livre mais les objets ou méthodes utilisé sont dépecreated et du coup je suis planté et perdu....

    En attendant ta réponse je jette un coup d'oeil à la FAQ au cas où

    Merci pour ton aide

  13. #13
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Je n'ai pas compris ce tu demandes
    Tu pourrais préciser (exemple concret par exemple) ?

    Eric

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    je reformule car il est vrai que ce que j'ai écrit n'est pas très français!!

    1) Quand on fait un required avec le validator, il n'y a pas besoin de rajouter de code en javascript, donc je pensais qu'il en était de meme pour vérifier les dates. J'ai donc chercher sur le net et trouver un bout de script qui permet de vérifier une date, et en rajoutant ce que tu m'avais dis(déclaration du javascript et du bout dans code dans la jsp) j'arrive à le faire fonctionner.De plus j'aimerais aussi comparé 2 dates (supérieur et inférieur)

    2)J'ai besoin de cette validation dans quasiment toute mes JSP. Ainsi je suis en train d'essayer d'intégrer mon javascript dans le fichier validator-rules ou validation.xml mais je n'y arrive pas.

    3)Du coup je te demandais conseil pour y parvenir (implémentation de la règle directement dans les fichiers xml du validator ou peut etre encore mieux déclaration d'une classe java qui s'occuperait de ca et serait appeler dans un des fichiers de règles du validator). En plus jusqu'a présent l'exemple que j'ai trouvé utilise des objets ou méthodes deprécié(depreacated?) et donc du coup je suis bloqué!!! Ainsi si tu connais un tutoriel simple clair et relativement récent, cela pourrait m'aider grandement !!

    Merci beaucoup

    en attendant je cherche dans la FAQ

  15. #15
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Bonjour,

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    package monPackage;
     
    import java.io.Serializable;
    import java.util.Date;
    import javax.servlet.http.HttpServletRequest;
    import org.apache.commons.validator.*;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.validator.FieldChecks;
    import org.apache.struts.validator.Resources;
     
    public class MonValidator extends FieldChecks
        implements Serializable
    {
     
        public Validator()
        {
        }
     
        public static boolean validateDateBeforeThan(Object bean, ValidatorAction va, Field field, ActionErrors errors, HttpServletRequest request)
        {
            String datePattern = field.getVarValue("datePattern");
            String datePatternStrict = field.getVarValue("datePatternStrict");
            java.util.Locale locale = Resources.getLocale(request);
            String value = null;
            Date dateWhichMustBeBefore = null;
            Date dateWhichMustBeAfter = null;
            if(FieldChecks.isString(bean))
                value = (String)bean;
            else
                value = ValidatorUtil.getValueAsString(bean, field.getProperty());
            String dependProp = field.getVarValue("field[0]");
            String otherValue = ValidatorUtil.getValueAsString(bean, dependProp);
            if(!GenericValidator.isBlankOrNull(value))
            {
                try
                {
                    if(datePattern != null && datePattern.length() > 0)
                    {
                        dateWhichMustBeBefore = GenericTypeValidator.formatDate(value, datePattern, false);
                        dateWhichMustBeAfter = GenericTypeValidator.formatDate(otherValue, datePattern, false);
                    } else
                    if(datePatternStrict != null && datePatternStrict.length() > 0)
                    {
                        dateWhichMustBeBefore = GenericTypeValidator.formatDate(value, datePatternStrict, false);
                        dateWhichMustBeAfter = GenericTypeValidator.formatDate(otherValue, datePatternStrict, false);
                    } else
                    {
                        dateWhichMustBeBefore = GenericTypeValidator.formatDate(value, locale);
                        dateWhichMustBeAfter = GenericTypeValidator.formatDate(otherValue, locale);
                    }
                }
                catch(Exception e)
                {
                    Trace.error(MODULE_LOG, "Validator", "validateDateBeforeThan", e);
                }
                if(dateWhichMustBeBefore == null || dateWhichMustBeAfter == null)
                    errors.add(field.getKey(), Resources.getActionError(request, va, field));
                if(!dateWhichMustBeBefore.before(dateWhichMustBeAfter))
                {
                    errors.add(field.getKey(), Resources.getActionError(request, va, field));
                    return false;
                } else
                {
                    return true;
                }
            } else
            {
                return false;
            }
        }
     
    }
    et dans le validator-rules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
           <validator name="dateBeforeThan"
                     classname="monPackage.MonValidator"
                     method="validateDateBeforeThan"
                     methodParams="java.lang.Object,
                                   org.apache.commons.validator.ValidatorAction,
                                   org.apache.commons.validator.Field,
                                   org.apache.struts.action.ActionErrors,
                                   javax.servlet.http.HttpServletRequest"
                           msg="errors.dateBeforeThan">
     
          </validator>
    Je n'ai pas le code Js qui va avec. Si tu le fais, n'hésites pas à poster

    Eric

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    salut,

    Ca ressemble beaucoup à ce que j'ai essayer de faire hier après midi d'après l'exemple que j'avais trouvé, donc je vais reprendre ton code et rajouter les méthodes retranscrites en java depuis javascript et essayer de faire marcher le tout ensemble.

    Par contre ton code utilise beaucoup d'objet que je connais pas car ca fais pas longtemps que je fais du struts....va falloir que je creuse et explore pas mal !!!

    pour le fichier validation.xml il faut que cela ressemble a ca alors? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form name="nom_formulaire">
        <field property="attribut1" depends="required,date">
            <var>
                <var-name>datePattern</var-name>
                <var-value>MM/dd/yyyy</var-value>
            </var>
        </field>
        <field property="attribut2" depends="required,date">
            <var>
                <var-name>datePattern</var-name>
                <var-value>MM/dd/yyyy</var-value>
            </var>
        </field>
    </form>
    Et ton bout de code récupérera tout seule les valeurs des champs?

    Merci beaucoup pour ton aide, je mis met dès ma fin de pause repas, et si jamais ca marche nickel je post et on mettra peut etre dans la FAQ nan? (je l'ai pas trouve et je pense que ca peux aider du monde...)

Discussions similaires

  1. Réponses: 35
    Dernier message: 12/03/2010, 10h34
  2. [Struts-Layout] probleme affichage layout:date
    Par valkeke dans le forum Struts 1
    Réponses: 3
    Dernier message: 09/12/2009, 18h26
  3. [Struts-Layout] Problème avec layout:date
    Par delph1983 dans le forum Struts 1
    Réponses: 13
    Dernier message: 29/06/2009, 11h44
  4. [Struts-Layout] utilisation du tag date
    Par osman.amine dans le forum Struts 1
    Réponses: 3
    Dernier message: 25/05/2007, 15h59
  5. [Struts-Layout] utilisation du layout-date
    Par osman.amine dans le forum Struts 1
    Réponses: 1
    Dernier message: 13/04/2007, 11h51

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