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 :

Rajouter un message a afficher dans 'execute'


Sujet :

Struts 1 Java

  1. #1
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut Rajouter un message a afficher dans 'execute'
    Salut,

    j'essaie en vain de rajouter dans une requête un message d'erreur en vue d'un affichage. Dans le cas ou le bouton 'cancel' a ete clique, donc 'isCancelled()' est vrai.

    voici le code:
    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
    package test;
     
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.ServletException;
     
    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;
    import org.apache.struts.action.ActionMessages;
     
    import bean.Login;
     
     
    public class LoginAction extends Action {
     
    	public ActionForward execute(ActionMapping mapping,
    			ActionForm form, 
    			HttpServletRequest request, 
    			HttpServletResponse response)
    			throws IOException, ServletException, 
    			IllegalAccessException, InvocationTargetException {
     
        		LoginForm monForm = (LoginForm) form;
        		Login monLogin = new Login();
     
        		//ActionMessages messages = new ActionMessages();
        		ActionErrors messages = new ActionErrors();
     
        		BeanUtils.copyProperties(monLogin, monForm);
        		request.setAttribute(mapping.getAttribute(), monLogin);
     
        		if(isCancelled(request)) {
        			System.out.println("******** on teste si 'cancel' **********");
     
        			messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.cancel"));
        			saveMessages(request, messages);
     
        			form.reset(mapping, request);
        			//request.setAttribute("login" , form);
        			return mapping.findForward("default");
        		}
     
        		if(("yohan").equals(monLogin.getLogin()) && ("zebulon").equals(monLogin.getMdp())) {
        			return mapping.findForward("succes");
        		}
     
        		return mapping.findForward("erreur");
        	    }
     
    }
    cote JSP, dans 'saisie.jsp' j'ai mis un affichage de toutes le erreurs:
    et la configuration :
    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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <struts-config>
    	<form-beans>
    		<form-bean name="LoginForm" type="test.LoginForm" />
    	</form-beans>
     
    	<global-forwards>
    		<forward name="succes" path="/pages/connected.jsp" />
    	</global-forwards>
     
    	<action-mappings>
    		<action	path="/login" 
    		input="/pages/saisie.jsp" 
    		name="LoginForm" 
    		type="test.LoginAction" 
    		scope="request" 
    		validate="true" >
    			<set-property property="cancellable" value="true"/>
    			<forward name="default" path="/pages/saisie.jsp" />
    			<forward name="erreur" path="/pages/erreur.jsp" />
    		</action>
    	</action-mappings>
     
    	    <message-resources parameter="MessageResources" />
       	    <message-resources key="mesMessages" parameter="mesResources.mesProperties" />
    </struts-config>
    J'ai essayé avec 'ActionMessages()' et 'ActionErrors()' mais les deux n'affichent rien. Je n'ai pas d'erreurs dans la console non plus.

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

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Oui c'est étrange, cela devrait fonctionner.

    As tu testé en nommant ton erreur de manière explicite?

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                ActionErrors errs = new ActionErrors();
                errs.add("meserreurs", new ActionError("libelle.monerreur1"));
                saveErrors(getRequest(), errs);
    et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:errors property="meserreurs" />

  3. #3
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    ca ne change rien en nommant l'erreur.

    Et dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saveMessages(getRequest(), messages);
    getRequest() n'est pas reconnu.

  4. #4
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    bon ca y est ca fonctionne, mais j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saveErrors(request, errs);
    comme tu me l'indiques au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saveMessages(request, messages);

  5. #5
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    en fait je viens de comprendre que pour afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saveMessages(request, messages);
    il faut la balise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:messages id="meserreurs"></html:messages>
    et pour afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saveErrors(request, messages);
    il faut le balise:par contre, il me faut un id pour le message, et je ne vois pas à quoi ca correspond exactement.

  6. #6
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    alors pour faire quelque chose qui tient la route.

    dans le bundle de messages:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    errors.general=The process did not complete. Details should follow.
    errors.cancel=*** Opération annulée ***
    dans la methode execute() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    messages.add("mesErreurs", new ActionMessage("errors.general"));
    messages.add("mesErreurs2", new ActionMessage("errors.cancel"));
     
    saveMessages(request, messages);
    et pour l'affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <html:messages id="general" message="true" property="mesErreurs"  >
    <bean:write name="general" />
    </html:messages><br>
    <html:messages id="annulation" message="true" property="mesErreurs2"  >
    <bean:write name="annulation" />
    </html:messages>
    Voilou, merci pour l'aide.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/07/2012, 13h50
  2. Afficher un message d'erreur dans un programme !
    Par hadid dans le forum Delphi
    Réponses: 14
    Dernier message: 30/10/2006, 17h32
  3. Afficher un message d'erreur dans une fenêtre popup
    Par Quickeno dans le forum Langage
    Réponses: 7
    Dernier message: 08/10/2006, 01h56
  4. Réponses: 6
    Dernier message: 16/01/2006, 19h12

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