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 :

Affichage des messages d'erreur aprés la validation du formulaire


Sujet :

Struts 1 Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Affichage des messages d'erreur aprés la validation du formulaire
    Bonjour,
    J'utilise le plugin validator de struts pour faire les controles sur mon formulaire.
    Les messages d'erreur s'affiche bien dans une fenêtre (alert javascript).
    Par contre, je souhaiterai qu'ils s'affichent plutôt à côté de chaque champs en erreur concerné.
    Pouvez vous m'indiquer comment faire?
    Merci d'avance pour votre aide.

  2. #2
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut


    moi je n'utilise pas le validator, mais je fais qd même apparaitre mes erreurs sur les champs en questions.

    Voici comment je fais :
    1) J'instancie d'abord mon ActionError (toi dans ton cas, je pense qu'il doit être déjà instancié dans ta fonction validator) comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActionErrors actionErrors = new ActionErrors();
    request.setAttribute("org.apache.struts.action.ERROR", actionErrors);
    ActionMessages msg = new ActionMessages();
    2) je vais lié mon erreur au property de mon bean pour que l'erreur apparaisse à son niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActionMessage actionErrorDrNomVide = new ActionMessage("");
    actionErrors.add("<nom_de_ton_property>", actionErrorDrNomVide);
    msg.add("<ref_de_ton_msg_pour_etre_unique>", new ActionMessage("<cle_de_ton_message_erreur_ou_ton_message_erreur>"));
    3) je valide ses messages pour qu'il s'affiche dans la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.saveMessages(request, msg);
    Voilou, je sais que ce n'est pas tout à fait dans ton contexte , mais je pense que tu peux t'en sortir avec
    Il y a de jeunes pilotes audacieux, il y a de vieux pilotes, mais il n'y a pas de vieux pilotes audacieux


  3. #3
    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 stukan Voir le message
    Bonjour,
    J'utilise le plugin validator de struts pour faire les controles sur mon formulaire.
    Les messages d'erreur s'affiche bien dans une fenêtre (alert javascript).
    Par contre, je souhaiterai qu'ils s'affichent plutôt à côté de chaque champs en erreur concerné.
    Pouvez vous m'indiquer comment faire?
    Merci d'avance pour votre aide.
    Dans ce cas, il ne faut pas activer la validation côté client mais seulement côté serveur.

    Il faut donc :

    supprimer de la jsp le tag :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:javascript formName="nomDuFormBean"/>
    supprimer l'attribut onsubmit dans le tag html:form.

    ajouter le tag suivant à côté de chaque champ du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:errors property="propriete1"/>
    et s'assurer que l'attribut validate est bien égal à true dans le mapping de l'Action.
    Modératrice Java - Struts, Servlets/JSP, ...

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos infos.

    Je souhaitai passer par le plugin validator pour ne pas avoir à écrire les contrôles dans la méthode validate de ma classe form mais dans le fichier xml de config. Et afficher les messages d'erreur en face de chaque champ.
    Donc en conclusion, il n'est pas possible d'afficher les messages d'erreur en face de chaque champ avec l'utilisation du plugin validator. Il faut le coder soit même avec :

    ActionErrors errors = new ActionErrors();
    errors.add("NOM_PROPRIETE", new ActionMessage("CLE_MESSAGE_ERREUR_CORRESPONDANT"));

    Et donc perdre l'avantage de la définition des contrôles dans le fichier de config xml

  5. #5
    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
    La solution que je t'ai donné fonctionne avec le plugin Validator pour une validation côté serveur.
    Il faut bien sûr que ton ActionForm hérite de ValidatorForm.
    Modératrice Java - Struts, Servlets/JSP, ...

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    J'ai fait les modifs mais comment je récupère les erreurs issus du contrôle par le validateur struts dans na classe form ?
    errors est null même s'il y je suis sensé avoir des erreurs quand je fais cette instruction :
    ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY);

    Merci.

  7. #7
    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
    Lorsque tu utilises le plugin Validator, tu n'as pas besoin de coder de méthode validate et de récupérer les erreurs, à moins que tu souhaites réaliser une validation complémentaire à celles gérées par le Validator.
    Si tu es dans ce cas-là, tu trouveras comment récupérer les erreurs dans la FAQ.
    Modératrice Java - Struts, Servlets/JSP, ...

  8. #8
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    J'ai bien compris le principe.
    Ma classe form etends ValidatorForm et dans sa méthode validate, je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    errors = super.validate(mapping, request);
    Par contre, je ne sais pas pourquoi à l'exécution j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    No such validation method: org.apache.struts.validator.FieldChecks.validateRequired (java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest)
    J'ai bien vérifié et j'ai le jar qui contient la classe FieldChecks avec la méthode validateRequired avec les bons paramètres.

    Une idée? Merci d'avance.

  9. #9
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Pour plus d'infos, voici la trace complète :
    DEBUG - RequestProcessor.processValidate(918) thread=http-8080-Processor23 | Validating input form properties
    ERROR - ValidatorForm.validate(115) thread=http-8080-Processor23 | No such validation method: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest)
    org.apache.commons.validator.ValidatorException: No such validation method: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest)
    at org.apache.commons.validator.ValidatorAction.loadValidationMethod(ValidatorAction.java:604)
    at org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:532)
    at org.apache.commons.validator.Field.validateForRule(Field.java:796)
    at org.apache.commons.validator.Field.validate(Field.java:876)
    at org.apache.commons.validator.Form.validate(Form.java:288)
    at org.apache.commons.validator.Validator.validate(Validator.java:351)
    at org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:113)
    at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:921)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:195)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:97)
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
    at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)

  10. #10
    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
    Peut-être un problème de version du jar commons-validator.jar ?
    As-tu pris celui livré avec ta version de Struts ?
    L'as-tu copié sous WEB-INF/lib ?

    Il faudrait aussi s'assurer qu'il n'y en a pas un dans un répertoire du serveur d'application. Si c'est le cas, ce n'est peut-être pas non plus la bonne version.
    Quel serveur d'application utilises-tu ?
    Modératrice Java - Struts, Servlets/JSP, ...

  11. #11
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    J'utilise Tomcat. Je vais voir par rapport aux versions de jar et je vous tiens au courant.

  12. #12
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    C'est bizarre mais sans rien faire (juste un clean du serveur) tout est rentré dans l'ordre.
    Merci bcp pour votre aide précieuse.

  13. #13
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut
    pas de pb, c'est avec grand plaisir
    Il y a de jeunes pilotes audacieux, il y a de vieux pilotes, mais il n'y a pas de vieux pilotes audacieux


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

Discussions similaires

  1. Affichage des messages d'erreur sur mon serveur
    Par philippe57460 dans le forum Langage
    Réponses: 4
    Dernier message: 25/06/2008, 09h23
  2. Affichage des message d'erreurs avec Struts
    Par stujava dans le forum Struts 1
    Réponses: 4
    Dernier message: 13/08/2007, 22h12
  3. affichage des message d erreures
    Par Philcmoi dans le forum JSF
    Réponses: 6
    Dernier message: 05/08/2007, 20h18
  4. [PostgreSQL] eviter l'affichage des messages d'erreur
    Par Gandalf dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/03/2007, 11h15
  5. Réponses: 2
    Dernier message: 13/10/2006, 00h36

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