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 :

[Validator] depends validwhen ne fonctionne pas !


Sujet :

Struts 1 Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut [Validator] depends validwhen ne fonctionne pas !
    EDIT : Reformulation de mon problème !


    J'ai un formulaire avec 2 champs :

    Date de début
    Date de fin

    J'utilise le framwork validator pour mon formulaire
    Voici le contenu de validation.xml qui fonctionne sans problème :

    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
    ...
    		<form name="ma-form">
        		 <field property="txtDateDebut" depends="required,date">
            		<arg0 key="label.begindate"/>
            		<var>
            			<var-name>datePatternStrict</var-name>
            			<var-value>yyyy/MM/dd</var-value>
            		</var>
            	</field>
      		    <field property="txtDateFin" depends="required,date">
      		    	<arg0 key="label.senddate"/>
      		    	<var>
      		    		<var-name>datePatternStrict</var-name>
      		    		<var-value>yyyy/MM/dd</var-value>
      		    	</var>
      		    </field>
        	</form>
    ...
    Hors, maintenant j'aimerais ajouter une condition :
    DateFin > DateDebut !

    Pour cela j'utilise la règle validwhen :

    Ce qui me donne pour la date de début la même chose mais pour la date de fin ceci :
    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
     
    ...
     		    <field property="txtDateFin" depends="required,date,validwhen">
      		    	<arg0 key="label.enddate"/>
      		    	<var>
      		    		<var-name>datePatternStrict</var-name>
      		    		<var-value>yyyy/MM/dd</var-value>
      		    	</var>
      		    	<arg1 name="test" key="label.enddate"/>
      		    	<var>
      		    		<var-name>test</var-name>
      		    		<var-value>(*this* > txtDateDebut)</var-value>
      		    	</var>
      		    </field>
    ...
    mais depuis que j'ai ajouté validwhen ça ne marche plus :'(

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    EDIT :

    J'ai également ça dans mon validator-rules.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
          <validator name="validwhen"
              msg="errors.required"
                     classname="org.apache.struts.validator.validwhen.ValidWhen"
                     method="validateValidWhen"
                     methodParams="java.lang.Object,
                           org.apache.commons.validator.ValidatorAction,
                           org.apache.commons.validator.Field,
                           org.apache.struts.action.ActionMessages,
                           org.apache.commons.validator.Validator,
                           javax.servlet.http.HttpServletRequest"/>
    ...
    Pour info j'utilise Struts 1.2.8 ... donc validwhen devrait fonctionner !
    Vous avez une idée ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    J'ai éditer mes 2 post pour reformulé plus clairement mon problème.
    J'ai également changer le nom du topic qui n'était pas approprié...

    Sinon dans mon struts-config.xml j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...
        <action path="/mon-result"  
         	type="com.monpackage.monAction"
         	name="ma-form"
         	input="/formulaire.do"
         	validate="true"
         	>
          <forward name="success" path="mon.resultats"/>
          <forward name="error" path="/WEB-INF/jsp/errors/error.jsp"/>
        </action>
    ...
    Et depuis que j'ai ajouté validwhen ça me redirige sur ma page d'erreure

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Je recense un autre post du forum sur le même problème qui déjà à l'époque n'avait pas été résolu !

    http://www.developpez.net/forums/sho...d.php?t=253213
    un autre !
    http://www.developpez.net/forums/sho...d.php?t=186792

    Le problème doit être commun à tous :'(

  5. #5
    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
    Bonjour,

    il est impossible pour le validewhen de comparer deux dates car les parametres sont des chaines de caracteres.
    De plus, il n'y a aucune informations concernant le pattern à utilisé pour la conversion en java.util.Date avant de faire la comparaison des dates dans les parametres du validwhen.

    la seule comparaison qu'il sait faire c'est avec des nombres (il est possible qu'il fasse justement une erreur en essayant de convertir la date en nombre).

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Merci pour ton éclaircicement, et tu as effectivement raison pour les dates !
    magrés cela tu dis que le validwhen ne sait faire que la comparaison avec des nombres ... alors que sur cette page, il y a des tests sur les chaines de caractères :

    http://www.ioicom.com/validator/view...7066AFB7795FFE

    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
    ...
          <!-- validwhen: simple validation -->
          <field property="lastName" depends="validwhen">
            <arg key="validWhenForm.lastName" />
            <var>
              <var-name>test</var-name>
              <var-value>((firstName == null) or (*this* != null))</var-value>
            </var>
          </field>
     
          <!-- validwhen: both fields validation -->
          <field property="fieldA" depends="validwhen">
            <msg name="validwhen" key="validWhenForm.error.both" />
            <var>
              <var-name>test</var-name>
              <var-value>( ((fieldB == null) and (*this* == null)) or ((fieldB != null) and (*this* != null)) )</var-value>
            </var>
          </field>
    ...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Je viens de faire ces changements
    -suppression de la validation pour ma date de début
    -suppression du test sur le format de date de fin datePatternStrict
    -ajout d'un simple test sur un champ vide et un champ plein (comme l'exemple trouvé sur le post d'avant !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
    		<form name="ma-form">
      		    <field property="txtDateFin" depends="required,validwhen">
     		    	<arg0 key="label.enddate"/>
      		    	<var>
      		    		<var-name>test</var-name>
      		    		<var-value>(*this* != null) or (txtDateDebut == null)</var-value>
      		    	</var>
      		    </field>
        	</form>
    ...
    Et là, toujours ma page d'erreure qui prouve que la validation à échoué ...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    D'après le site officiel (struts v 1.2.8)

    http://struts.apache.org/1.2.8/userG...validator.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     A few quick notes on the grammer.
     
        * All comparisons must be enclosed in parens.
        * Only two items may be joined with and or or
        * If both items to be compared are convertable to ints, a numeric comparison is done, otherwise a string comparison is done.
    traduction :

    * Toutes les comparaisons doivent être mis entre parenthèse.
    * Seulement deux valeurs peuvent être joints avec and ou or
    * Si les deux champs à comparer sont convertible en entier, une comparaison numérique est faite, autrement une comparaison de chaine de caractère est faite.

    D'après le troisième point, les tests sur les strings sont donc bien possible !

  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 les String c'est uniquement les == ( ou != ) qui marchent pas les < ni les >.

    dans les changements, il manque deux parentheses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <var-value>((*this* != null) or (txtDateDebut == null))</var-value>

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    ça ne marche pas mieu avec les parenthèses
    J'ai noté ceci :
    Si je laisse txtDateFin vide => Le required du depend fonctionne et mon message apparait !
    Si je remplis txtDateFin (txtDateDebut plein ou vide) => page erreure

  11. #11
    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
    Mais l'erreur est sur quoi
    la validation de la date de fin ou celle de début ?
    Serait - il possible de voir la partie validation des deux champs ?

  12. #12
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Juste pour info, si tu as besoin d'une validation javascript, le validWhen ne le gere pas d'origine.

    Donc si t'en as besoin la seule solution est de faire un validator personnalisé :p.

  13. #13
    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 pense également que la meilleure solution est de créer un validator personnalisé, même pour une validation côté serveur.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par extensedev_ Voir le message
    Juste pour info, si tu as besoin d'une validation javascript, le validWhen ne le gere pas d'origine.

    Donc si t'en as besoin la seule solution est de faire un validator personnalisé :p.
    Pour le javascript, je ne l'utilise pas ... donc le problème ne vient pas de là !
    Sinon j'ai effectivement fini par faire un validator personnalisé hier soir. Comme quoi on finit tous par en arrivé là à ce que je vois

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

Discussions similaires

  1. Validation du formulaire ne fonctionne pas
    Par Arzawe dans le forum Langage
    Réponses: 5
    Dernier message: 26/01/2012, 11h47
  2. Réponses: 3
    Dernier message: 02/12/2008, 15h22
  3. AS3-PHP, fonction de validation de fonctionne pas.
    Par azetaz dans le forum Langage
    Réponses: 4
    Dernier message: 30/11/2008, 22h18
  4. Validation formulaire qui ne fonctionne pas
    Par dom59111 dans le forum Langage
    Réponses: 6
    Dernier message: 25/10/2007, 10h18
  5. code action script et xml valide mais ne fonctionne pas
    Par artotal dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 27/03/2006, 16h32

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