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 2 Java Discussion :

Problème de validation


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Par défaut Problème de validation
    Bonjour à tous,
    Je souhaite faire une validation declarative de type regex sur un champ. Le problème est qu'il n'a pas l'air de vouloir prendre en compte cette regex.
    J'ai tenté de mettre cette regex sur un autre champ pour voir si c'était la regex qui était mauvaise, mais non! Elle marche bien sur un autre champ.

    En chipotant un peu, je me suis rendu compte que la seule différence, c'était que le type de la variable derrière le champ sur lequel la regex marchait était un String et sur celui sur lequel ca ne marche pas, le type est un double.

    Ma regex :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <field-validator type="regex">
               <param name="expression"><![CDATA[(\A[0-9]{0,3}\.?[0-9]{0,2}\z)]]></param>
               <message key="error.format"></message>
    </field-validator>
    Donc je veux que l'utilisateur entre dans le champ un chiffre tel que 999.99.

    Si je ne met pas de validator ou même si j'en mets un et que je rentre "aaaa" par exemple, le message qui en sort est toujours "Invalid field value for field...."

    On dirait que Struts tente de faire une conversion avant la validation... Et du coup, il me renvoie sa propre erreur.

    Si je rentre un chiffre quelconque, il ne me met pas d'erreur mais la regex n'est pas appliquée.

    Si vous avez une piste ou si vous avez eu le même cas etq ue vous l'avez résolu, ce serait sympa de m'aider.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut
    est ce que tu as bien la librairie:
    <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
    dans ton validator.xml?

    Sinon j'utilise aussi struts2...non sans peines...et je crois que le validator <field-validator type="conversion"> est automatique même s'il n'est pas précisé.

  3. #3
    Membre chevronné Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Par défaut
    Oui oui tout était bien là.
    Alors j'ai finalement trouvé la réponse. En fait dans le struts-default.xml, dans la pile des interceptor, la conversion vient avant la validation. C'est pour cela que j'avais un message qui venait de je ne sais où. Ca, c'était mon premier problème. Je l'ai résolu en mettant dans mon fichier package.properties : invalid.fieldvalue.LeNomDeMonChamp = Mon message perso. Donc maintenant quand j'entre des lettres au lieu de chiffre, l'interceptor conversion intervient et mon message apparait.

    Pour mon problème de regex, il apprait que je ne peux pas faire de regex sur un champ de type double. Comme la conversion intervient avant la validation, j'applique un regex sur un double et plus sur un String. Ce que Struts ne veut pas... Une solution (que je n'ai pas essayée) serait peut être d'inverser la conversion et la validation dans la pile d'interceptor. Mais je ne sais pas ce que cela entraîne...

    Au final, ce que j'ai fait, c'est que j'ai limité le chiffre qu'il peut entré.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <field-validator type="double">
                      <param name="minExclusive">-1000</param>
                      <param name="maxExclusive">1000</param>
                      <message>The value of the field  needs to be between ${minExclusive}
     ${maxExclusive} (exclusive)</message>
                  </field-validator>

    Ce qui me permet de limiter quand même à 3 chiffres avant la virgule. Pour limiter les chiffres après la virgule, je fait une petite opération dans mon fichier MonAction.java

    Voilà, si vous avez des questions ou suggestions, n'hésitez pas!

    En attendant je met le post en résolu!

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

Discussions similaires

  1. problème de validation de formulaire
    Par calitom dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2006, 15h12
  2. Problème de validation de données
    Par loutsky dans le forum Access
    Réponses: 3
    Dernier message: 23/11/2005, 14h11
  3. [débutante] problème de validation des méta-tags
    Par silversky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/09/2005, 17h26
  4. problème de validation HTML
    Par silversky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 05/09/2005, 13h47

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