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 ] Probleme LookupDispatchAction


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Par défaut [ STRUTS ] Probleme LookupDispatchAction
    Bonjour à tous,

    J'ai vu dans la F.A.Q Struts que, pour gerer plusier bouton submit dans une formulaire sans JavaScript, l'Action associée à ce formulaire devait hériter de "LookupDispatchAction". J'ai suivis les différentes étapes:

    Ajout de l'attribut "parameter" dans struts-config.xml pour l'Action concernée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <action
          attribute="gererUnitesForm"
          input="/pages/GererUnites.jsp"
          name="gererUnitesForm"
          parameter="submit"
          path="/gererUnites"
          scope="request"
          type="com.plansactions.struts.action.GererUnitesAction">
          <forward name="succes" path="/pages/GererUnites.jsp" />
          <forward name="selectionChanged" path="/pages/GererUnites.jsp" />
          <forward name="echec" path="/pages/Erreur.jsp" />
        </action>
    Faire hériter la classe de l'Action de LookupDispatchAction et ecrire les méthodes nécessaires:
    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
    protected Map getKeyMethodMap() {
    		Map map = new HashMap();
    		map.put("boutton.ajouter", "ajouter");
    		map.put("boutton.supprimer", "supprimer");
    		map.put("boutton.mettreAJour", "mettreAJour");
    		return map;
     
    	}
     
    	public ActionForward ajouter(ActionMapping mapping, ActionForm form, 
    		    					HttpServletRequest request, HttpServletResponse response) {
       ...
    	}
     
    	public ActionForward supprimer(ActionMapping mapping, ActionForm form, 
    			HttpServletRequest request, HttpServletResponse response){
       ...
    	}
     
    	public ActionForward mettreAJour(ActionMapping mapping, ActionForm form, 
    			HttpServletRequest request, HttpServletResponse response){
       ...
    	}
    Ajout des cle dans le RessourceBundle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    boutton.ajouter=ajouter
    boutton.supprimer=supprimer
    boutton.mettreAJour=mettre a jour
    Et enfin le code concerné de la jsp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <html:submit>
       <bean:message key="boutton.ajouter"/>
    </html:submit><BR>
    <html:submit>
       <bean:message key="boutton.mettreAJour"/>
    </html:submit><BR>
    <html:submit>
       <bean:message key="boutton.supprimer"/>
    </html:submit><BR>
    Aucun probleme lors du deploiement ni de l'affichage de la jsp mais losque je clique sur un des bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
     
    exception 
     
    javax.servlet.ServletException: Request[/gererUnites] does not contain handler parameter named submit
    	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.doPost(ActionServlet.java:525)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    J'ai trouve plusieurs posts sur le forum traitant du sujet mais avec du JavaScript et donc la classe DispatchAction et non la classe LookupDispatchAction.

    Quelqu'un aurait-il déjà rencontré le problème et rouvé la solution? Est-ce mon code ou celui de la FAQ qui pose problème?

    Merci d'avance pour vos réponses .

  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
    submit est la propriété par défaut du html:submit, donc il n'est normalement pas nécessaire de le coder dans le tag html:submit.

    Mais peux-tu quand même faire un test en modifiant comme ceci chacun de tes tag html:submit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:submit property="submit">
       <bean:message key="boutton.ajouter"/> 
    </html:submit><BR>
    Sinon, n'y aurait-il pas un autre endroit dans ta jsp où tu soumettrais l'action de path /gererUnites sans paramètre submit ?

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Par défaut
    Ben en fait si...
    Je m'explique: j'aimerais mettre à jour ma jsp lors de l'evenement "onchange" d'un html:select du formulaire.
    Sans trop savoir comment faire en en fouillant sur les forums j'ai vu qu'il était possible d'indiquer directement la méthode de l'action qui doit être executée lors de cet evenement, sans savoir si sela était correcte.
    Alors j'ai fait comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <html:select property="uniteSelectionnee" value="${uniteSelectionnee}" onchange="com.plansactions.struts.action.GererUnites.selectionChanged()">
    							<html:option value="Nouvelle unite">Nouvelle unite</html:option>
    							<c:forEach var="unite" items="${unites}">
    								<html:option value="${unite}"/>
    							</c:forEach>
    						</html:select>
    Dans l'action /gererUnites j'ai cette méthode faisant le traitement voulu et qui revoie une ActionForward:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public ActionForward selectionChanged(ActionMapping mapping, ActionForm form, 
    			HttpServletRequest request, HttpServletResponse response){...}
    Cela entre-t-il en conflit avec le reste de mon code?

    Encore merci du temps consacré à mon (mes...) problème, une fois de plus...

  4. #4
    Membre averti
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Par défaut
    Après avoir avoir ajouter l'attribut property="submit"....ça fonctionne
    Là je suis chez moi, j'espère que ça fonctionnera également sur mon lieu de stage.

    Je pense que je vais consacré une page entière de remerciements à ce forum dans mon mémoire

  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
    J'aimerais quand même bien comprendre pourquoi il est nécessaire de coder cet attribut property="submit", sachant que normalement c'est sensé être la propriété par défaut du tag html:submit.
    Ca dépend peut-être de la version de Struts utilisée.
    Pourrais-tu me dire quelle version de Struts tu utilises ?

  6. #6
    Membre averti
    Inscrit en
    Février 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 48
    Par défaut
    C'est la version 1.2 datée du 03/04/2006.

    S'il y'a eu du changement concernant ce tag et cet attribut depuis la version utilisée dans la FAQ, de nombreuse personnes se trouveront probablement face au même problème.
    J'espère qu'ils trouveront ce post...ou peut-être est-il possible de corriger la FAQ

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

Discussions similaires

  1. [Struts] Problème avec la méthode validate
    Par clement42 dans le forum Struts 1
    Réponses: 2
    Dernier message: 09/06/2005, 10h52
  2. [STRUTS] probleme de compilation d'une page JSP
    Par XristofGreek dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 31/03/2005, 17h48
  3. [STRUTS] Probleme avec le tiles Framework
    Par SEMPERE Benjamin dans le forum Struts 1
    Réponses: 7
    Dernier message: 02/10/2004, 14h11
  4. [ struts ] probleme à l'exécution
    Par flogreg dans le forum Struts 1
    Réponses: 12
    Dernier message: 23/08/2004, 12h11
  5. [struts] probleme champs dynamiques
    Par rocco dans le forum Struts 1
    Réponses: 28
    Dernier message: 07/06/2004, 21h26

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