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 côté client


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Points : 25
    Points
    25
    Par défaut [ Struts ] Validator côté client
    Bonjour,

    J'essais de mettre en oeuvre la notion de Validator côté client.
    Comme dit dans différents endroits, j'ai:

    Dans ma jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:form action="/displayDisruptionOut.do" onsubmit="validateDisplayDisruptionForm(this)">
    Toujours ma jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <logic:notEqual name="Mode" value="Consultation" >
         <html:text property="dateDebut" onfocus="this.style.color='#990099';" onblur="this.style.color='#333399'"  maxlength="10" size="10" />  
         <html:text property="heureDebut" onfocus="this.style.color='#990099';" onblur="this.style.color='#333399'"  maxlength="2" size="1" /> 
    h
         <html:text property="minuteDebut" onfocus="this.style.color='#990099';" onblur="this.style.color='#333399'"  maxlength="2" size="1" />  
    </logic:notEqual>
    et encore ma jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:errors/>
     
    <html:javascript formName="displayDisruptionForm"/>
    Mon plugin installé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
            <set-property property="pathnames" value="/WEB-INF/validation.xml,
    												/WEB-INF/validator-rules.xml"/>
          </plug-in>
    Mon fichier validation.xml qui pour le moment ne contient que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!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>             
          <form name="displayDisruptionForm">
             <field property="dateDebut" depends="required">
                   <arg0 key="error.datedebut"/> 
    		 </field>    
          </form>        
       </formset>   
    </form-validation>
    Mon form étend ValidatorForm à la place d'ActionForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class DisplayDisruptionForm extends ValidatorForm {

    Je m'attends à ce que en création, quand je valide mon formulaire alors que je n'ai pas renseigné ma date de début, il se passe quelque chose, un erreur soit affichée (mon "error.datedebut" qui est renseignée dans "ApplicationRessources.properties")

    Mais rien ne se passe... A côté de quoi suis-je passée?

    Je précise que j'ai découvert cette notion (Validator) hier matin Je suis donc loin d'avoir une vision globale de la chose...

    Merci d'avance à ceux et celles qui me répondront...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 81
    Points : 69
    Points
    69
    Par défaut
    heu en regardant vite fait essaye plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onsubmit="return validateDisplayDisruptionForm(this);"
    sinon met de preference ton html:javascript avant ton html:form dans ta page

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    J'ai changé selon tes conseils mais ça n'améliore pas...

    Pour que cela fonctionne, faut-il que le validate() soit implémenté dans mon Form?
    Et dans le Struts-config.xml, faut-il que le "validate" soit à true?

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    salut,
    tu pourrais faire voir ton struts_config.xml steuplé
    Merci

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Bien sûr
    Je l'ai un peu taillé.
    Je pense avoir gardé les éléments inhérents au 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
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    <?xml version="1.0" encoding="UTF-8" ?>
     
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
     
    <struts-config>
     
      <form-beans>
     
        <form-bean
          name="displayDisruptionForm"
          type="com.appli.views.disruption.form.DisplayDisruptionForm"
        />
     
      </form-beans>
     
       <action-mappings>
        <action
          path="/displayDisruptionOut"
          type="com.appli.views.disruption.action.DisruptionOutAction"
          name="displayDisruptionForm"
          scope="session"
          input="/jsp/disruption.jsp"
          parameter="methodToCall"
          unknown="false"
          validate="false"
        >
          <forward
            name="modifyDisruption"
            path="/displayDisruptionIn.do?methodToCall=modifyDisruption"
            redirect="false"
          />
          <forward
            name="duplicateDisruption"
            path="/displayDisruptionIn.do?methodToCall=duplicateDisruption"
            redirect="false"
          />
          <forward
            name="displayList"
            path="/displayDisruptionListIn.do?methodToCall=displayList"
            redirect="false"
          />
          <forward
            name="disconnect"
            path="/jsp/index.jsp"
            redirect="false"
          />
          <forward
            name="exit"
            path="/jsp/exit.jsp"
            redirect="false"
          />
        </action>
        <action
          path="/displayGenForCreateOut"
          type="com.appli.views.generic.action.GenForCreateOutAction"
          name="displayDisruptionForm"
          scope="session"
          input="/jsp/index.jsp"
          parameter="methodToCall"
          unknown="false"
          validate="false"
        >
          <forward
            name="createDisruption"
            path="/displayDisruptionIn.do?methodToCall=createDisruption"
            redirect="false"
          />
          <forward
            name="disconnect"
            path="/jsp/index.jsp"
            redirect="false"
          />
          <forward
            name="exit"
            path="/jsp/exit.jsp"
            redirect="false"
          />
        </action>
        <action
          path="/displayDisruptionIn"
          type="com.appli.views.disruption.action.DisruptionInAction"
          name="displayDisruptionForm"
          scope="session"
          input="/jsp/disruption_list.jsp"
          parameter="methodToCall"
          unknown="false"
          validate="false"
        >
          <forward
            name="disruptionDetail"
            path="/jsp/disruption.jsp"
            redirect="false"
          />
          <forward
            name="modifyDisruption"
            path="/jsp/disruption.jsp"
            redirect="false"
          />
          <forward
            name="duplicateDisruption"
            path="/jsp/disruption.jsp"
            redirect="false"
          />
          <forward
            name="createDisruption"
            path="/jsp/disruption.jsp"
            redirect="false"
          />
        </action>
     
      <message-resources
            factory="org.apache.struts.util.PropertyMessageResourcesFactory"
            key="org.apache.struts.action.MESSAGE"
            null="true"
            parameter="com.appli.ApplicationResources" />
          <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
            <set-property property="pathnames" value="/WEB-INF/validation.xml,/WEB-INF/validator-rules.xml"/>
          </plug-in>
     
    </struts-config>
    Merci !

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    euh, une question comme ca en passant,
    Pourquoi n'utilise tu pas des DynaValidatorForm???
    Si des traitement suplémentaire sur ton formulaire ne sont pas neccessaire, il vaudrait mieu utiliser un form dynamque

    Apres en ce qui concerne ton probleme,
    Tu as bien toutes les getter dans la classe de ton form?
    Ta date est bien du String?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Points : 25
    Points
    25
    Par défaut

    En fait si j'ai découvert les validators hier, j'ai découvert Struts il y de ça à peine deux semaines et je me dépatouille toute seule (Merci dvp.com!). Autour de moi peu de gens pour me conseiller : ceux qui utilisent Struts n'utilisent (j'ai l'impression) que le principe du MVC2 mais pas tous les taglibs et le Validator.
    Tout ça pour dire : je ne sais pas pourquoi je n'utilise pas des DynaValidatorForm Quels sont les avantages?

    Et oui je pense avoir tout les getters dans mon form et ma date est bien en String...

    Merci pour ta réponse.

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Mais il faut pas rougir mademoiselle :lol:

    Les DynaForm te permette de ne pas créer ta classe Form. Donc pas de getter/setter ils sont créer automatiquement
    ce qui changerai alors dans ton struts-config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form-bean name="displayDisruptionForm"
          type="org.apache.struts.validator.DynaValidatorForm"
         <form-property type="java.lang.String" name="dateDebut"/>
        <form-property type="java.lang.String" name="heureDebut"/>
    ...
    </form-bean>
    Apres ca marche tout comme un form normal

    Pour ton probleme, est ce que tu as regardé la console javascript kan tu valide?
    Si oui ya koi dedans?
    Sinon, par ailleurs dans ton validation.xml, il faut ke tu lui dise d'afficher u message lorsque ton champs est vide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <formset>             
          <form name="displayDisruptionForm">
             <field property="dateDebut" depends="required">
                   <arg0 key="error.datedebut"/>
                   <msg name="required" key=" la clé de ton message dans ton ApplicationRessource"/>
           </field>   
          </form>       
       </formset>  
     
    Ca vient surement de la

  9. #9
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Pour ton information l'attribut validate dans le fichier struts-config est à true par default.

    Donc si tu implémentes la méthode validate dans ton formulaire il y passera à chaque action qui utilise ce form.

    A contrario si tu ne veux pas l'utiliser, là il faut mettre explicitement validate="false".
    Etre c'est etre relatif.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    hackwell69 :
    J'utilise xDoclet pour générer mon struts-config.xml : est-ce compatible avec les DynaForm?
    Si je comprends bien, si j'ai 35 attributs dans mon form, si je passe en DynaForm, j'aurai 35 lignes <form-property ... ?

    Quand je valide, il n'y a rien dans la console js ... (Pas de petit triangle jaune )
    Et j'ai ajouté la ligne, ce qui donne maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!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>             
          <form name="displayDisruptionForm">
             <field property="dateDebut" depends="required">
                   <arg0 key="error.datedebut"/> 
                   <msg name="required" key="errors.required"/> 
    		 </field>    
          </form>        
       </formset>   
    </form-validation>
    Mais ça ne change rien...

    yolepro : Ok pour les ActionForm. Et les validate des Actions? A quoi servent-ils?

    Merci pour vos réponses : ça fait plaisir le matin en arrivant d'avoir des pistes pour avancer

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    J'ajoute juste pour peut-être orienter les réponses, que dans ma page générée, il y a juste:
    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
     
    <script type="text/javascript" language="Javascript1.1"> 
     
    <!-- Begin 
     
         var bCancel = false; 
     
        function validateDisplayDisruptionForm(form) {                                                                   
            if (bCancel) 
          return true; 
            else 
           return true; 
       } 
     
     
    //End --> 
    </script>
    En fait il ne me génère rien qui soit en rapport avec mon validation.xml...

  12. #12
    Nouveau membre du Club
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    J'ai laissé le problème de côté et y suis revenue aujourd'hui. Sans plus de succès.

    Est-ce que quelqu'un a déjà rencontré ce problème?
    Aucune méthode de validation n'est générée dans ma page html (voir précédent message). j'ai beau trifouiller, rien ne change.

    Y a t-il un moyen de débugger ça petit à petit?

    Merci d'avance de votre attention.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Alors sans rentrer dans les détails vu que je ne les connais pas encore (j'ai pas fouillé encore), à priori mon problème venait du contenu de validator-rules.xml. Je viens de l'échanger contre un autre, et oh magie, j'ai bien toutes mes méthodes de validation js dans la source de ma page.
    Donc résolu pour ce thread mais j'en ouvre un autre A tout de suite!

    Merci à ceux qui m'ont aidée.

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

Discussions similaires

  1. Struts 2 validation coté client
    Par aya02 dans le forum Struts 2
    Réponses: 0
    Dernier message: 18/04/2010, 02h39
  2. struts validator coté client, alertbox sans message
    Par jayjaypg22 dans le forum Struts 1
    Réponses: 2
    Dernier message: 23/02/2010, 11h01
  3. [Struts-Validator] Gestion d'erreurs
    Par sylvain_neus dans le forum Struts 1
    Réponses: 14
    Dernier message: 09/04/2004, 15h15
  4. Réponses: 9
    Dernier message: 24/03/2004, 12h15
  5. [Struts]Validation de formulaire
    Par djoukit dans le forum Struts 1
    Réponses: 4
    Dernier message: 12/03/2004, 09h12

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