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 d'un formulaire avec la methode validate


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Points : 77
    Points
    77
    Par défaut validation d'un formulaire avec la methode validate
    salut tout le monde,
    pour valider les champs d'un formulaire j'utilise la methode validate dans l'ActionForm, tout parrait bien fait (en fait je suivais un tutorial) mais bizarrement ça marche pas,
    voilà le code dans l'submitForm
    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
     public ActionErrors validate(ActionMapping mapping,
    		  HttpServletRequest request) {
     
     
     
    		  // Check for mandatory data
    		  ActionErrors errors = new ActionErrors();
    		  if (lastName == null || lastName.equals("")) {
    		  errors.add("Last Name", new ActionMessage("error.lastName"));
    		  }
    		  if (address == null || address.equals("")) {
    		  errors.add("Address", new ActionMessage("error.address"));
    		  }
    		  if (sex == null || sex.equals("")) {
    		  errors.add("Sex", new ActionMessage("error.sex"));
    		  }
    		  if (age == null || age.equals("")) {
    		  errors.add("Age", new ActionMessage("error.age"));
    		  }
    		  return errors;
     
    		  }
    et dans le struts-config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <action path="/submit"
     type="submit.SubmitAction"
     name="submitForm"
     input="/submit.jsp"
     scope="request"
     validate="true">
     <forward name="failure" path="/errors.jsp"/>
     <forward name="success" path="/submit.jsp"/>
     </action>
    et dans le submit.jsp
    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
    <html:errors/>
     
     <html:form action="submit.do">
     Last Name: <html:text property="lastName"/><br>
     First Name: <html:text property="firstName"/><br>
     Address: <html:textarea property="address"/><br>
     Sex: <html:radio property="sex" value="M"/>Male
     <html:radio property="sex" value="F"/>Female<br>
     
     Age: <html:select property="age">
     <html:option value="a">0-19</html:option>
     <html:option value="b">20-49</html:option>
     <html:option value="c">50-</html:option>
     </html:select><br>
     <html:submit/>
     </html:form>
    et je reçois ce message d'erreur;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    org.apache.jasper.JasperException: Cannot find message resources under key org.apache.struts.action.MESSAGE
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
    ....................

    Est ce que vous avez une idée, moi de ma part j'arrête pas à chercher..

    Merci beaucoup d'avance

  2. #2
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    As tu défini le fichier .properties qui contient tous les messages à afficher?

    C'est à dire dans ton struts-config, as tu bien la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <message-resources parameter="MessageResources"/>
    Et donc un fichier du genre MessageResources_fr_FR.properties qui contient tes commentaires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    error.lastName=Nom obligatoire
    error.address=...
    ...

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Points : 77
    Points
    77
    Par défaut
    Merci pour votre rèponse assez rapide
    Non,
    je le fait tout de suite et je vous mets au courant

    à toute de suite

  4. #4
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Points : 77
    Points
    77
    Par défaut
    salut,
    ça marche pas
    En fait au debut j'avait un nouveau message d'erreur: ActionMessage can not be casting actionError, alors j'ai changé le ActionMessage par ActionError, et depuis j'ai aucun message d'erreur mais aussi il fait pas la validation du formulaire, puisque je laisse mes champs vides et j'ai aucun message d'erreurs qui s'affiche,

    Est ce que vous avez une idée?

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Points : 77
    Points
    77
    Par défaut
    excusez moi, je me suis trompé!
    en fait il fait la validation mais j'au aucun message d'avertissement(pour dire que ce champ est obligatoire) qui s'affiche.
    poutant j'ai mis dans mon fichier jsp
    et même avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:errors property="firstName"/>
    ça marche pas

    merci

  6. #6
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Je vais donner un exemple très très simplifié de la chose.

    J'ai un Form où je vérifie si la date de naissance à été rempli ou si elle fait bien 10 caractères:
    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
     
    public class PersonnelForm extends ActionForm { 
        private String dateNaissance; 
       
        public String getDateNaissance() { 
        return dateNaissance; 
        } 
     
        public void setDateNaissance(String dateNaissance) { 
        this.dateNaissance = dateNaissance; 
        } 
     
        public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { 
        ActionErrors errors = new ActionErrors(); 
        if ((this.dateNaissance == null) || (this.dateNaissance.length() == 0)) { 
            errors.add("naissance", new ActionMessage("dateNaissance.vide")); 
        } else if (this.dateNaissance.length() != 10) { 
            errors.add("naissance", new ActionMessage("dateNaissance.manque")); 
            this.dateNaissance = null; 
        } 
        return errors; 
        } 
    }
    Mon fichier de properties se trouve dans WebContent/WEB-INF/classes/ et contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dateNaissance.vide=La date de naissance est obligatoire
    dateNaissance.manque=La date de naissance doit faire 10 caractères
    dans le struts-config, j'ai donc toujours le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <message-resources parameter="MessageResources" />
    Et donc dans ma JSP, j'aurai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <tr> 
              <td align="right"> 
                Date de naissance (dd-mm-yyyy) : 
              </td> 
              <td align="left"> 
                <html:text property="dateNaissance" size="20" maxlength="10"/>
              </td> 
              <td align="left"> 
                  <html:errors property="naissance"/> 
              </td> 
            </tr>
    Les couleurs sont là pour montrer les associations de nom à bien respecter lors de la définition des validations

    EDIT: dans le struts-config, je dis qu'il y a de la validation à faire ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <action path="/personnel" input="/personnel_form.jsp" scope="request" 
                name="personnelForm" type="com.struts.controleur.AjoutPersAction" 
                validate="true"> 
                <forward name="succes" path="/personnel_succes.jsp" redirect="false" /> 
                <forward name="echec" path="/personnel_form.jsp" redirect="false" /> 
            </action>

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Points : 77
    Points
    77
    Par défaut
    D'accord Parfait!
    j'ai fait la même chose mais ça marche pas,
    alors je vais juste poser des questions supplémentaires:
    1) la balise <message-resources> ça se trouve ou dans le struts-config?
    2) est ce que le fichier properties s'appelle MessageResources ou bien MessageResources_fr_FR
    3) Moi je suis sur eclipse donc je mets mon fichier properties sous src/submit donc l'url sera : <message-resources parameter="submit.MessageResources"/>

    MErci

  8. #8
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Points : 77
    Points
    77
    Par défaut
    Aussi je comprends pas pourquoi chez moi quand je mets ActionMassage au lieu de ActionError et il m'affiche cet erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.jasper.JasperException: org.apache.struts.action.ActionMessage cannot be cast to org.apache.struts.action.ActionError
    alors que chez vous ça marche

  9. #9
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Quel est la version de Struts utilisée, j'ai bien peur d'après ce qui est dit que ce n'est pas la version 1.3.x

  10. #10
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Points : 77
    Points
    77
    Par défaut
    Je sais pas comment on peut savoir la version utilisée, parceque j'ai juste copier/coller le .jar (struts.jar) d'un autre projet et j'ai aucune idée sur la version utilisée

  11. #11
    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
    Citation Envoyé par amine84 Voir le message
    Aussi je comprends pas pourquoi chez moi quand je mets ActionMassage au lieu de ActionError et il m'affiche cet erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.jasper.JasperException: org.apache.struts.action.ActionMessage cannot be cast to org.apache.struts.action.ActionError
    alors que chez vous ça marche
    Si tu ne peux pas utiliser ActionMessage à la place de ActionError, cela signifie que tu utilises une version antérieure à la 1.2.
    Tu es donc sans doute en Struts 1.1.

    Normalement, tu dois pouvoir trouver la version dans le fichier MANIFEST.MF présent dans le répertoire META-INF du jar de Struts.

  12. #12
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Points : 77
    Points
    77
    Par défaut
    ça y est
    MErci pour l'information c_nvy.
    en fait c struts 1.1, j'ai renomé le fichier properties MessageResources au lieu de MessageResources_fr_FR et Bien sur actionError au lieu actionMessage et ça marche très bien.
    mais si je veux migrer vers struts 1.3 est ce que ça me cause beaucoup de problèmes dans mon application ou bien Non??

    salutations distinguées pour zorm

  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
    Pour connaître la liste des mises à jour à faire si tu décides de changer de version, jette un oeil aux StrutsUpgradeNotes.

  14. #14
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Points : 77
    Points
    77
    Par défaut
    Ok!
    Merci.
    Maintenant je peux mettre la tag résolue

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 12/05/2010, 22h28
  2. [MySQL] formulaire avec lien de validation
    Par emmy99 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/02/2008, 11h15
  3. Réponses: 1
    Dernier message: 21/05/2007, 19h57
  4. Réponses: 6
    Dernier message: 03/04/2006, 09h42
  5. [Struts] Problème avec la méthode validate
    Par clement42 dans le forum Struts 1
    Réponses: 2
    Dernier message: 09/06/2005, 10h52

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