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 :

Utilisation de LookupDispatchAction


Sujet :

Struts 1 Java

  1. #1
    Membre régulier Avatar de reverse_engineer
    Inscrit en
    Juillet 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2008
    Messages : 98
    Points : 80
    Points
    80
    Par défaut Utilisation de LookupDispatchAction
    j'ai utilisé le lookdispatchaction exactement comme c'est décrit en faq LookupDispatchAction et j'ai eu l'erreur suivante :

    javax.servlet.ServletException: Request[/gestionserveur] does not contain handler parameter named servaction
    org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:199)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

  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
    Si tu as ce message, cela signifie que quelque part, tu exécutes l'Action de path /gestionserveur sans paramètre servaction.

    As-tu bien codé l'attribut property="servaction" sur chaque bouton submit de ton formulaire ?

  3. #3
    Membre régulier Avatar de reverse_engineer
    Inscrit en
    Juillet 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2008
    Messages : 98
    Points : 80
    Points
    80
    Par défaut
    voici le code dans la jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
      <td><html:submit property="servaction">
                          <bean:message key="button.add"/>
                          </html:submit>
                          </td>
                      <td> <html:submit property="servaction">
                           <bean:message key="button.mod"/>
                          </html:submit>
                      </td>
                      <td><html:submit property="servaction">
                            <bean:message key="button.sup"/>
                           </html:submit>
                           </td>

    j'ai crée une méthode dans mon bean servaction.java du package serveur ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected Map getKeyMethodMap() {
    		Map<String, String> map = new HashMap<String, String>();
    		map.put("button.add", "add");
    		map.put("button.mod", "mod");
    		map.put("button.sup", "sup");
    		return map;
    	}

    et dans struts-config.xm voici la partie :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    action path="/gestionserveur"
    name ="formserver"
    scope="request"
    validate="true"
    type="serveur.servaction"
    parameter="servaction">
    <forward name="afficherrien" path="/gestionserveur.jsp"/>
    <forward name="afficherErreurs" path="/gestionserveur.jsp"/>
    </action>


    je recois le mm message!!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut
    Tu dois aussi déclarer autant de méthodes que tu as d'actions. Ces méthodes doivent avoir la même signature que la méthode LookupDispatchAction.execute() :
    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
     
    public class MonAction extends LookupDispatchAction {
    	public ActionForward add(ActionMapping mapping, ActionForm form,
    			HttpServletRequest req, HttpServletResponse res)
    	throws Exception {
    		return mapping.findForward("addResult");
    	}
     
    	public ActionForward mod(ActionMapping mapping, ActionForm form,
    			HttpServletRequest req, HttpServletResponse res)
    	throws Exception{
    		return mapping.findForward("modResult");
    	}
     
    	public ActionForward sup(ActionMapping mapping, ActionForm form,
    			HttpServletRequest req, HttpServletResponse res)
    	throws Exception{
    		return mapping.findForward("supResult");
    	}
    }

  5. #5
    Membre régulier Avatar de reverse_engineer
    Inscrit en
    Juillet 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2008
    Messages : 98
    Points : 80
    Points
    80
    Par défaut
    c'était fait j'ai oublié de le mentionner ,je recois ttoujours cette erreur tout en ayant ces trois méthodes

    merci d'avance

  6. #6
    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
    A quel moment obtiens-tu le message ? à l'affichage de la jsp ou lorsque tu cliques sur un bouton submit ?
    Sinon, comment fais-tu pour afficher la jsp ? Fais-tu appel à la jsp directement ou passes-tu par une Action ?

    Peux-tu aussi préciser quelle version de Struts tu utilises ?

  7. #7
    Membre régulier Avatar de reverse_engineer
    Inscrit en
    Juillet 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2008
    Messages : 98
    Points : 80
    Points
    80
    Par défaut
    j'utilise struts 1.1 .
    le message s'affiche avant l'affichage de la page jsp .
    je gère mes jsp avec des actions . .do

    merci d'avance

  8. #8
    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
    J'espère que ce n'est pas l'Action servaction que tu appelles pour afficher la jsp ? parce que sinon, ça pourrait expliquer ton problème.

  9. #9
    Membre régulier Avatar de reverse_engineer
    Inscrit en
    Juillet 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2008
    Messages : 98
    Points : 80
    Points
    80
    Par défaut
    je crois que oui
    voici le code dans struts-config.xml


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <action path="/gestionserveur"
    name ="formserver"
    scope="request"
    validate="true"
    type="serveur.servaction"
    parameter="servaction">
    <forward name="addMessage" path="/gestionserveur.jsp"/>
    <forward name="modMessage" path="/gestionserveur.jsp"/>
    <forward name="supMessage" path="/gestionserveur.jsp"/>
    <forward name="afficherErreurs" path="/gestionserveur.jsp"/>
    </action>

  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
    Si tu fais appel à l'Action de path /gestionserveur pour afficher la jsp la première fois, tu ne lui passes pas de paramètre servaction, ce qui explique le message d'erreur.

    Il y a peut-être une solution en ajoutant la méthode unspecified dans la LookupDispatchAction qui effectue juste un forward vers la jsp.
    Elle devrait être appelée par défaut quand le paramètre servaction n'est pas spécifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected ActionForward unspecified(ActionMapping mapping,ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception
    {
    	return mapping.findForward("addMessage");
    }
    A tester.

  11. #11
    Membre régulier Avatar de reverse_engineer
    Inscrit en
    Juillet 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2008
    Messages : 98
    Points : 80
    Points
    80
    Par défaut
    j'ai testé ça marche toujours pas ,je sais pas si cela peut me causer un problème le fait que le bean servaction.java et l'action servaction aient le même nom

    merci !!!

  12. #12
    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
    Il faut donner un nom différent à ton Action et ton ActionForm : par exemple, ServAction pour ton Action et ServForm pour ton ActionForm.

    Sinon, si la méthode unspecified ne fonctionne pas, tu peux définir une autre action dans le struts-config.xml qui fait juste un forward vers la jsp :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <action path="/initGestionserveur" forward="/gestionserveur.jsp"/>
    et faire appel à cette action de path /initGestionserveur pour le premier affichage de la jsp.

    Ou alors définir une méthode init dans la LookupDispatchAction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public ActionForward init(ActionMapping mapping,ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception
    {
    	return mapping.findForward("addMessage");
    }
    et faire appel à gestionserveur.do en lui passant en paramètre servaction=init pour le premier affichage de la page jsp.

    En fait, tout dépend ce qui s'exécute avant l'appel de cette page.

Discussions similaires

  1. Utilisation de LookupDispatchAction
    Par newmar dans le forum Struts 1
    Réponses: 3
    Dernier message: 20/04/2008, 11h01
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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