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 d'ActionMessages dans ma JSP


Sujet :

Struts 1 Java

  1. #1
    Invité
    Invité(e)
    Par défaut Affichage d'ActionMessages dans ma JSP
    Salut,
    j'ai un mapping un peu spécial, et lorsque je veux afficher des erreurs cela ne fonctionne pas. Voici mes bouts de code :

    struts-config.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <action path="/demande" name="saisieAdministrativeFormBean" type="logica.actions.DemandeInitAction" scope="request">
          <forward name="valid" path="/view/demande.jsp"/>
          <forward name="invalid" path="/view/demande.jsp"/>
    </action>
    <action path="/validateDemande" name="demandeFormBean" type="logica.actions.DemandeAction" validate="true" input="/demande.do">
          <forward name="valid" path="/view/success.jsp"/>
          <forward name="invalid" path="/demande.do"/>
    </action>
    Dans mon action DemandeInitAction, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ActionMessages errors = new ActionMessages();
            ActionMessage msg = null;
            msg = new ActionMessage("error","CACA");
            errors.add(ActionMessages.GLOBAL_MESSAGE,msg);
     
            messages.add("piecejointe", new ActionMessage("error.demande.piecejointe.toobig"));
     
            this.saveMessages(request, errors);
            return mapping.findForward("valid");
    Dans mon action DemandeAction, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(!resultUpload)
            {
                messages.add("piecejointe", new ActionMessage("error.demande.piecejointe.toobig"));
                result="invalid";
                this.saveMessages(request, messages);
                return mapping.findForward(result);
            }
    Enfin, dans mon demande.jsp, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:messages id="error"></html:messages>
    Le but étant que lorsque j'ai une erreur dans mon DemandeAction, celui ci me redirige vers demande.do pour rééfectuer le pré-traitement de la page demande.jsp. Celle-ci doit pouvoir afficher les erreurs provenant de DemandeAction, donc je pensais pouvoir rediriger les erreurs dans mon DemandeInitAction. Or, même en faisant un ActionMessage tout simple, je n'arrive pas à l'afficher dans mon jsp.

  2. #2
    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 afficher les messages dans la jsp, il faut ajouter l'attribut message="true" dans le tag html:messages et le tag bean:write comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:messages id="error" message="true">
      <bean:write name="error"/>
    </html:messages>
    La prochaine fois, merci de consulter la FAQ avant de poster.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Effectivement, j'ai peut-être posté un peu vite...
    Merci c_nvy

  4. #4
    Invité
    Invité(e)
    Par défaut
    En fait cela ne marche qu'à moitié. En effet, avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <logic:messagesPresent message="true">
        <html:messages id="error" message="true">
          <h2>YOUPI</h2>
        </html:messages>
    </logic:messagesPresent>
    la JSP va m'afficher autant de "YOUPI" qu'il y a de message. Par contre, avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <logic:messagesPresent message="true">
        <html:messages id="error" message="true">
          <bean:write name="error"/>
        </html:messages>
    </logic:messagesPresent>
    Il va me lever une exception Cannot find bean: "error" in any scope

    J'ai encore du omettre quelque chose...

  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
    Le tag logic:messagesPresent ne sert à rien car le tag html:messages ne bouclera sur la liste des messages que s'il y a des messages.
    S'il n'y en a pas, il n'affichera rien.

    Par contre, je ne comprends pas pourquoi tu as cette exception.
    As-tu bien les directives taglib pour les tlds struts-logic.tld, struts-html.tld et struts-bean.tld au début de la jsp ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ou j'ai bien tous les tld.

  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
    Peux-tu reposter le code qui crée la liste d'ActionMessages ?
    Tu n'y aurais pas ajouté un ActionMessage null par hasard ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Dans mon action à la fin j'ai rajouté ça juste pour tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ActionMessages errors = new ActionMessages();
    errors.add("error", new ActionMessage("error","sqfsdf"));
    errors.add("error", new ActionMessage("error","blabla"));
    this.saveMessages(request, errors);
     
    return mapping.findForward("valid");

  9. #9
    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
    Mais as-tu bien défini une clé error dans ton fichier properties ?
    En plus, tu donnes le même nom à tes ActionMessages.
    Je ne suis pas certaine que ça lui convienne.

    Essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActionMessages errors = new ActionMessages();
    errors.add("error1", new ActionMessage("error","sqfsdf"));
    errors.add("error2", new ActionMessage("error","blabla"));
    this.saveMessages(request, errors);

  10. #10
    Invité
    Invité(e)
    Par défaut
    OK en fait j'avais mal compris le principe des ActionMessages...
    Merci encore c_nvy

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

Discussions similaires

  1. Affichage d'image dans ma JSP
    Par abed77 dans le forum Servlets/JSP
    Réponses: 17
    Dernier message: 19/08/2011, 11h32
  2. probleme avec l'affichage des images dans une jsp
    Par hypothese dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 27/05/2008, 16h56
  3. [Exception] affichage des exceptions dans une jsp
    Par phoebe dans le forum Struts 1
    Réponses: 8
    Dernier message: 13/02/2008, 15h31
  4. Affichage d'horodates dans Struts / JSP
    Par AlienQueen dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/11/2006, 19h19

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