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 :

DispatchAction et global-forwards


Sujet :

Struts 1 Java

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

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 90
    Points
    90
    Par défaut DispatchAction et global-forwards
    Bonjour,

    Est-il possible d'utiliser des <global-forward> pour les servelts d'une même classe héritant de DispatchAction ?

    Je m'explique :

    Dans un formulaire, le bouton submit appelle "/MonAppli.do?method=appel"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <%@ taglib="/WEB-INF/tld/struts-html.tld" prefix="h" %>
    ...
    <body>
       <h:form action="/MonAppli.do?method=appel">
       ...
          <h:submit value="Valider"/>
    </body>
    ...
    Je voudrais remplacer l'action de la balise <h:form> par "/appel", sachant que je mets dans struts-config.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        <global-forwards>
            <forward name="/appel" path="/MonAppli.do?method=appel"/>
        </global-forwards>
        <action-mappings>
    	<action name="MAForm" path="/MonAppli" type="MonAppli" parameter="method"/>
        </action-mappings>
    Hélas, je prends une exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    javax.servlet.ServletException: Cannot retrieve mapping for action: "/appel"
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
    	org.apache.jsp.pages.add_jsp._jspService(add_jsp.java:73)
    	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)
    A moins que ce ne soit impossible ?

    Merci par avance.

  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
    Dans l'attribut action du tag form, tu dois référencer le path d'une Action et non le nom d'un forward.
    Modératrice Java - Struts, Servlets/JSP, ...

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

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Dans l'attribut action du tag form, tu dois référencer le path d'une Action et non le nom d'un forward.
    C'est bien ce que je craignais, c'est bien impossible (snif )

    Merci cependant !

  4. #4
    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
    Je ne sais pas pourquoi tu voulais faire cela mais la solution pour toi serait peut-être d'utiliser une MappingDispatchAction à la place de la DispatchAction :

    L'Action doit hériter de MappingDispatchAction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class MaMappingDispatchAction extends MappingDispatchAction
    {
    	public ActionForward methode1(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception
    	{
      	   ...
    	   return mapping.findForward("success") ;
    	}
    	public ActionForward methode2(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception
    	{
    	   ...
    	   return mapping.findForward("success") ;
    	}	
    }
    Dans le struts-config.xml, il faut définir autant de mapping que de méthodes de la MappingDispatchAction et mettre dans chaque attribut parameter le nom de chacune des méthodes :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <action path="/path1" type="monpackage.MaMappingDispatchAction" name="maValidatorActionForm"
    	 scope="session" validate="true" input="/page1.jsp" parameter="methode1">
    	<forward name="success" path="/page2.jsp"/>
    </action>
    <action path="/path2" type="monpackage.MaMappingDispatchAction" name="maValidatorActionForm"
    	 scope="session" validate="true" input="/page2.jsp" parameter="methode2">
    	<forward name="success" path="/page3.jsp"/>
    </action>
    et dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       <html:form action="/path1">
    Modératrice Java - Struts, Servlets/JSP, ...

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

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Voilà une excellente suggestion, je ne connaissais pas cette classe. Je vais donc faire un test.

    En outre, ma véritable raison ici est de cacher l'URL (enfin, l'URI), sur demande de l'exploitation qui ne veut plus voir en "dur" des adresses dans les JSP...

    J'essaie et te tiens au courant. Je pense de toute façon que cela marchera.

Discussions similaires

  1. WMI - Changer les global forwarders d'un DNS
    Par Invité dans le forum C#
    Réponses: 1
    Dernier message: 28/06/2010, 10h18
  2. pb avec global-forwards
    Par yeddoughmi dans le forum Struts 1
    Réponses: 3
    Dernier message: 23/07/2007, 16h38
  3. global forwards en jsf?
    Par the_ugly dans le forum JSF
    Réponses: 2
    Dernier message: 27/11/2006, 17h34
  4. global-forward vers une definition Tiles
    Par ArithmeticException dans le forum Struts 1
    Réponses: 1
    Dernier message: 17/09/2006, 22h03
  5. [ STRUTS ] [ FORWARD ] utiliser <global-forwards>
    Par LoulouFifi dans le forum Struts 1
    Réponses: 3
    Dernier message: 30/03/2004, 16h46

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