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 :

intégrer messages d'erreur Validator


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut intégrer messages d'erreur Validator
    J'ai intégré Validator dans mon application, et voici la configuration :

    1- struts-config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
              <set-property
                property="pathnames"
               value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    	</plug-in>	
     
    	<!-- Properties...-->
    	<message-resources parameter="resources/application"/>
     
    	<!-- Formulaires...-->
    	  <form-beans>
    			<form-bean name="formContact" type="src.main.formulaires.ContactForm"/>
    	  </form-beans>
    2- validation.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <formset>
            <!-- Validation pour le formulaire ContactForm -->
            <form name="formContact">
                <field
                    property="nom"
                    depends="required">
                        <arg key="formContact.nom"/>
                </field>
            </form>
        </formset>
    3- ContactForm
    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
    public class ContactForm extends ValidatorForm{
        /** Serial Version UID    */
        private static final long serialVersionUID = 1L;
        /** Champ du formulaire : nom    */
        private String nom;
        //  Constructeur par défaut de ContactForm()...
        public ContactForm(){}
     
        // getter et setter du name
        public String getNom() {
            return nom;
        }
        public void setNom(String nom) {
            this.nom = nom;
        }
        public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
        {
        //     ici on récupère tous les messages d'erreurs gérés par le Validator
    	ActionErrors errors = super.validate(mapping, request);
    	if (nom == null || nom.length()==0){
              errors.add("error.nom.empty",new ActionMessage ("error.nom"));
    	}
    	return errors;
        }
    }
    4- et la JSP : contacts.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <td colspan="2">
     <html:text property="nom" styleClass="champ" value=""></html:text>
       <FONT face="Arial, Helvetica, sans-serif" size=2 color=red>	
    	<html:errors property="error.nom.empty"/>
    </FONT>	
    </td>
    5- Properties : application.properties
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    formContact.nom=Nom
    errors.nom=<font color="blue">Le champ [{0}] doit être renseigné.</font>
    errors.required= <font color="blue">Le champ [{0}] doit être renseigné.</font>
    Ce que je veux, c'est afficher un message d'erreur en rouge à coté de mon champ, j'ai pris simple pour commencer, mais je suis perdu je n'arrive pas à comprendre pourquoi ça ne marche pas...

    Est ce que j'ai oublié qque chose ??

    Merci d'avance de votre aide...

  2. #2
    Expert confirmé

    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
    Par défaut
    Essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<html:errors property="nom"/>
    Sinon, pourquoi avoir laissé la méthode validate ?

    EDIT : De plus, pour éviter d'avoir à répéter la balise font dans chaque message, ajoute ceci au début de ton fichier .properties :
    errors.header=<font color="red">
    errors.footer=</font>

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Merci de ta réponse, je ne comprends pas bien ta question, j'ai bien mis la méthode validate dans mon "ContactForm",

    j'ai essayé ta proposition, mais ca ne marche pas...

    dois je changer aussi la définition au niveau du contactForm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActionErrors errors = super.validate(mapping, request);
    	if (nom == null || nom.length()==0){
              errors.add("error.nom.empty",new ActionMessage ("error.nom"));
    	}
    C'est à dire : error.nom.empty --> nom

    en tout cas, j'ai essayé les 2 cas, et ca ne marche toujours pas...

  4. #4
    Expert confirmé

    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
    Par défaut
    Lorsque tu fais une validation via le Validator, tu ne dois pas coder de méthode validate, sauf dans le cas où tu souhaites effectuer une validation complémentaire complexe que tu ne peux pas faire avec le Validator.

    Or, dans ta méthode validate, tu effectues le même test que celui que fait le Validator avec la règle required.
    Je ne vois donc pas bien l'intérêt.
    Soit tu utilises le Validator, soit tu utilises la méthode validate, mais pas les deux.

    Il faut donc supprimer la méthode validate.
    Il faut également t'assurer que tu as bien mis l'attribut validate à true dans le mapping de l'Action dans le struts-config.xml.

    Ensuite, dans l'attribut property du tag html:errors, il faut spécifier le nom de la propriété sur laquelle tu fais la validation, soit nom.

    C'est pourquoi je t'ai dit de coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:errors property="nom"/>
    Sinon, as-tu vu ma remarque concernant le errors.header et errors.footer ?

    Et ton fichier application.properties est-il bien dans le répertoire resources ?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Sinon, as-tu vu ma remarque concernant le errors.header et errors.footer ?

    Et ton fichier application.properties est-il bien dans le répertoire resources ?
    Pour les 2 questions Oui, et je te remercie pour la première remarque...

    j'ai rajouté l'attribut "validate " :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action path="/envoyerDemande" type="src.main.actions.ActionDemande" name="formContact" scope="session" validate="true" input="/vues/contacts.jsp">
        		<forward name="Mail" path="/vues/mail.jsp" redirect="false"/>
           	</action>
    dans le fichier application.properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    errors.header=<font color="red">
    errors.footer=</font>
    formContact.nom=Nom
    errors.nom=Le champ [{0}] doit être renseigné.
    errors.required=Le champ [{0}] doit être renseigné.
    Ca ne marche toujours pas...

  6. #6
    Expert confirmé

    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
    Par défaut
    Peux-tu montrer l'arborescence de ton projet ?

    Sinon, n'as-tu pas de messages d'erreur dans la console ou la log du serveur ?
    et plus particulièrement au parsing du struts-config.xml ?
    parce que normalement, il y a un ordre à respecter pour les balises.

    La balise message-resources après la balise action-mappings et la balise plugin après la balise message-resources.

    Sinon, as-tu bien le jar commons-validator.jar sous WEB-INF/lib ?
    Et le fichier validator-rules.xml est-il bien celui qui est livré avec la version de Struts que tu utilises ?
    D'ailleurs, peux-tu préciser quelle version de Struts tu utilises ?

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

Discussions similaires

  1. Message d'erreur "Validation Message"
    Par felix79 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 11/02/2011, 10h09
  2. [MySQL] Message d'erreur SQL mysql_fetch_assoc(): supplied argument is not a valid
    Par pony99 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 19/02/2007, 16h44
  3. Message d'erreur qd je valide mon projet
    Par yanis97 dans le forum Maven
    Réponses: 1
    Dernier message: 04/01/2007, 09h30
  4. Réponses: 9
    Dernier message: 17/08/2006, 15h04
  5. [Struts] Message d'erreur Validate Action Form
    Par cosmos38240 dans le forum Struts 1
    Réponses: 7
    Dernier message: 26/10/2005, 11h05

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