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 1.2.7] affichage d'erreurs


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut [Struts 1.2.7] affichage d'erreurs
    Bonjour,

    Je bute sur un malheureux problème d'affichage d'erreurs. Un simple formulaire, index.jsp demande un nom et un âge :

    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
     
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <jsp:useBean id="clock" class="java.util.Date"/>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
    <head>
    	<title>Projet en Struts</title>
    	<meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
    </head>
    <body>
    	<h1>Bonjour!</h1>
    	Date et heure du jour : <%=clock.toString()%>
    	<hr>
        <html:form action="/accueil"> 
          <table width="45%" border="0">
            <tr>
    	  		<td>nom:</td> 
    	  		<td><html:text property="nom" /></td>
            </tr>
            <tr>
    	  		<td>age:</td> 
    	  		<td><html:text property="age" /></td>
            </tr>
            <tr>
    			<td colspan="2" align="center"> <html:submit /></td>
            </tr>
          </table> 
        </html:form> 
    </body>
    </html>
    Le Bean du formulaire, FormulaireBean.java est le suivant :
    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
     
    public class FormulaireBean extends ActionForm {
     
    	private static final long serialVersionUID = 1L;
    	private String nom;
    	private int age;
     
    	/* setters et getters */
     
    	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    		ActionErrors errors = new ActionErrors();
     
    		if (getNom() == null || getNom().equals("")) {
    			errors.add("nom", new ActionMessage("erreur.nom.required"));
    		}
    		if (getAge() <= 0) {
    			errors.add("age", new ActionMessage("erreur.age.required"));
    		}
    		return errors;
    	}
    }
    Enfin, le 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
    15
    16
     
    <struts-config>
    	<form-beans>
    		<form-bean name="formBean" type="beans.FormulaireBean" />
    	</form-beans>
     
    	<action-mappings>
    		<action path="/accueil"  name="formBean" input="/jsp/index.jsp" validate="false" type="src.Accueil">
    			<forward name="echec" path="/jsp/echec.jsp" />
    			<forward name="succes" path="/jsp/succes.jsp" ></forward>
    		</action>
    	</action-mappings>
     
     
    	<message-resources parameter="resources.MessageResources"></message-resources>
    </struts-config>
    Bien évidemment, le fichier "MessageResources.properties" se trouve dans /WEB-INF/resources :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    erreurs.nom.required=Le nom n'est pas pr&eacute;cis&eacute;
    erreur.age.required=L'&acirc; n'est pas pr&eacute;cis&eacute;
    erreurs.formulaire.vide=Le formulaire est vide !
    Maintenant, je n'arrive pas à comprendre pourquoi mes messages d'erreur n'apparaissent pas dans ma page echec.jsp (quand je laisse le champ "nom" vide et/ou un âge négatif) :

    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
     
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <jsp:useBean id="clock" class="java.util.Date"/>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
    <head>
    	<title>Projet en Struts : échec !</title>
    	<meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
    	<style type="text/css">
    h1 {color : red}
    	</style>
    </head>
    <body>
    	<h1>&Eacute;chec !</h1>
    	<u>Raisons :</u>
    	<hr/>
    	<html:errors />
    	<hr/>
    	Date et heure du jour : <%=clock.toString()%>
       </body>
    </html>
    Je suis certain que cela doit être tout bête , mais si quelqu'un pouvait m'aider...

    Merci par avance !

  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
    Le répertoire resources contenant le fichier MessageResources.properties doit être sous WEB-INF/classes.

    Si tu utilises un IDE comme Eclipse, tu peux mettre le répertoire resources dans le répertoire des sources (au même endroit que les packages qui contiennent tes classes Java). Ainsi, celui-ci sera automatiquement copié sous WEB-INF/classes.

  3. #3
    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
    Je n'avais pas fait attention tout à l'heure, mais si tu veux que la méthode validate de l'ActionForm soit exécutée, il faut mettre validate à true dans le mapping de l'Action dans le struts-config.xml et spécifier dans l'attribut input la page vers laquelle tu veux être redirigé en cas d'erreur de validation.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut
    Si je comprends bien, il me faut mettre :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <struts-config>
    	<form-beans>
    		<form-bean name="formBean" type="beans.FormulaireBean" />
    	</form-beans>
     
    	<action-mappings>
    		<action path="/accueil"  name="formBean" input="/jsp/echec.jsp" validate="true" type="src.Accueil">
    			<forward name="echec" path="/jsp/echec.jsp" />
    			<forward name="succes" path="/jsp/succes.jsp" ></forward>
    		</action>
    	</action-mappings>
     
     
    	<message-resources parameter="resources.MessageResources" />
    </struts-config>

    J'ai bien fait cela, mais à l'appel de la servlet, j'ai l'erreur suivante :
    exception

    org.apache.jasper.JasperException: org.apache.struts.action.ActionMessage
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:476)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1012)
    org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:980)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:255)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    cause mère

    java.lang.ClassCastException: org.apache.struts.action.ActionMessage
    org.apache.struts.taglib.html.ErrorsTag.doStartTag(ErrorsTag.java:215)
    org.apache.jsp.jsp.echec_jsp._jspx_meth_html_005ferrors_005f0(echec_jsp.java:111)
    org.apache.jsp.jsp.echec_jsp._jspService(echec_jsp.java:82)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
    org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1012)
    org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:980)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:255)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Que se passe-t-il ?

  5. #5
    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
    Es-tu sûr d'utiliser Struts 1.2.7 ?

    Sinon, as-tu déplacé le répertoire resources comme je te l'ai indiqué précédemment ?

    Et aussi, vérifie que les clés des messages sont corrects dans le fichier properties.

    Tu as défini ceci :
    erreurs.nom.required=Le nom n'est pas pr&eacute;cis&eacute;
    et dans la méthode validate, tu as mis "erreur.nom.required" sans "s" à erreur.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut
    Merci de m'avoir fait remarquer que j'avais effectivement fait une erreur dans mes clés

    Je viens de regarder le fichier MANIFEST.MF... Je suis en version 1.0, alors que mon chef me prétendait être en 1.2.7 !!! Je viens de perdre un après-midi entier...

    Je commence à comprendre certaines choses... Bon, je reprends tout à zéro et reviens dès que cela avance.

    Au passage, j'ai bien déplacé le répertoire resources comme tu me l'avais conseillé, je pense que c'est effectivement plus propre.

    Merci en tout cas !

Discussions similaires

  1. Struts layout affichage tableaux erreur: Missing resources
    Par bous_saad317 dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/10/2006, 15h09
  2. [Struts Validator] probleme affichage des erreurs
    Par Morpheus2144 dans le forum Struts 1
    Réponses: 7
    Dernier message: 24/01/2006, 16h25
  3. [Struts]Tag Logic:present pour les erreurs
    Par Shabata dans le forum Struts 1
    Réponses: 2
    Dernier message: 13/04/2005, 17h42
  4. [Eclipse 3.0]Affichage des erreurs
    Par alfsalim dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/07/2004, 18h33
  5. [struts][.properties] pb d'affichage
    Par anas.rih dans le forum Struts 1
    Réponses: 3
    Dernier message: 15/04/2004, 18h58

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