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] pb avec le DispatchAction


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Par défaut [Struts] pb avec le DispatchAction
    Bonjour,

    Nous souhaitons utiliser plusieurs actions dans un formulaire avec le DispatchAction mais cela ne fonctionne pas.

    A l'exécution de notre JSP, nous obtenons le message :
    message Request[/lotsAdmin] does not contain handler parameter named dispatch
    description La requête envoyée par le client était syntaxiquement incorrecte (Request[/lotsAdmin] does not contain handler parameter named dispatch).

    Pouvez-vous nous aider ?
    Merci

    Nous avons mis dans la JSP adminLots.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function setDispatch(value){			document.LotsForm.dispatch.value=value;}
    ...
    <html:form action="/lotsAdmin" method="POST">
        <html:hidden property="dispatch" value="initial"/>
        <html:submit onclick="setDispatch('liste');">Liste</html:submit>
    </html:form>
    Dans le struts-config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     <form-bean       name="LotsForm"
                         type="fr.sod.mig.work.web.LotsForm">
    </form-bean>
     
    <action    path="/lotsAdmin"
                   input="/adminLots.jsp"
                   type="fr.sod.mig.work.web.LotsAction"
                   name="LotsForm"
                   scope="request"
                   validate="false"
                   parameter="dispatch">
          <forward name="succes"             path="/adminLots.jsp"/>
    </action>
    Et dans la classe action
    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
    public class LotsAction extends DispatchAction
    {
        public LotsAction()
        {        super();}
     
        public ActionForward liste(
            ActionMapping       mapping,
            ActionForm          form,
            HttpServletRequest  request,
            HttpServletResponse response)
            throws Exception
        {
        	System.out.println ("coucou");
            return mapping.findForward("succes");
        }
       public ActionForward initial(
                ActionMapping       mapping,
                ActionForm          form,
                HttpServletRequest  request,
                HttpServletResponse response)
                throws Exception
            {
            	System.out.println ("coucou2");
                return mapping.findForward("succes");
            }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Par défaut
    Bonjour,

    Il existe un très bon tutorial sur ce site:
    http://java.developpez.com/faq/strut...dispatchAction

    A consulter !

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Par défaut
    Nous avons déjà consulté ce tutorial et nous n'avons pas trouvé l'erreur commise

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Par défaut
    Je fais personnellement la chose suivante:
    j'ai une classe AbstractVeteoableAction qui étend la classe LookupDispatchAction.

    Dans ma classe AbstractVeteoableAction , je définis un objet map
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected static final Map map = new HashMap();
    	static {
    		map.put("button.liste", "liste");
    	}
    Le paramètre "button.liste" est définit dans le fichier properties de l'application.

    Mon action du formulaire étend ensuite la classe AbstractVeteoableAction et contient la méthode liste et le tour est joué.

  5. #5
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Bonjour ton problème viens du fait que tu utilises une dispatchAction, a laquelle il faut toujours fournir un paramètre pour qu'elle puisse déterminer quelle méthode appellée.

    En effet il faudrait pouvoir faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:form action="/lotsAdmin?dispatch=liste" >
    ...
    </form>
    mais ce n'est pas permis.
    Il faut donc définir un forward, une sorte d'alias.
    dans le struts-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <forward contextRelative="false" name="dispatchListe"  path="lotsAdmin?dispatch=liste" redirect="false"/>
    et donc le form devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:form action="dispatchListe" >
    ...
    </form>
    Mais si je peux me permettre une remarque, tu as l'air de débuter avec struts, peut être vaut il mieux commencer par autre chose que les dispatchAction.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Par défaut
    En effet nous sommes débutants.

    Nous avons essayé d'utiliser la solution avec le <forward contextRelative ...> dans le struts-config mais nous avons toujours le même problème.

    Au départ, pour arriver à lancer plusieurs actions à partir d'une jsp, nous avons placé dans cette jsp plusieurs formulaires déclanchant chacun une action. Mais nous souhaitons utiliser qu'un seul formulaire par page.

    Pouvez-vous nous dire qu'elle autre solution, plus simple, pouvons nous utiliser ?

  7. #7
    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
    message Request[/lotsAdmin] does not contain handler parameter named dispatch
    description La requête envoyée par le client était syntaxiquement incorrecte (Request[/lotsAdmin] does not contain handler parameter named dispatch).
    Ce message d'erreur apparaît-il au submit du formulaire ou à l'appel de la jsp ?
    Comment est effectué le premier appel à la page adminLots.jsp ?

  8. #8
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Citation Envoyé par SODTLSE
    En effet nous sommes débutants.

    Nous avons essayé d'utiliser la solution avec le <forward contextRelative ...> dans le struts-config mais nous avons toujours le même problème.

    Au départ, pour arriver à lancer plusieurs actions à partir d'une jsp, nous avons placé dans cette jsp plusieurs formulaires déclanchant chacun une action. Mais nous souhaitons utiliser qu'un seul formulaire par page.

    Pouvez-vous nous dire qu'elle autre solution, plus simple, pouvons nous utiliser ?
    En fait la dispatch action existe pour réduire le nombre de classe, qui dans certains cas peut devenir très elevé. Si ce n'est pas votre problème pour l'instant et a forcerie si vous n'avez qu'un seul formulaire par page utilise une action "normale".

    Je vous recommande de faire ce tutorial point par point.
    Après revenez reposer vos question, ce sera certainement plus clair:
    http://wpetrus.developpez.com/java/struts/
    et
    http://tahe.developpez.com/java/struts/
    Attention sur le second il y a un errata pour les nouvelle version de struts.


    Maintenant pour reprendre le probleme qu'est ce qui ne marchait pas avec le forward et comment avez vous fait?

  9. #9
    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
    message Request[/lotsAdmin] does not contain handler parameter named dispatch
    description La requête envoyée par le client était syntaxiquement incorrecte (Request[/lotsAdmin] does not contain handler parameter named dispatch).
    A mon avis, ce message-là signifie que, quelque part dans votre appli, vous appelez l'action de path /lotsAdmin sans paramètre dispatch.

    Donc, comme je l'ai demandé dans mon message précédent, comment est effectué le premier appel à la page adminLots.jsp ?
    sans doute via un appel de l'action de path /lotsAdmin sans paramètre dispatch ?
    Si c'est le cas, il faut le rajouter.

  10. #10
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Citation Envoyé par c_nvy
    message Request[/lotsAdmin] does not contain handler parameter named dispatch
    description La requête envoyée par le client était syntaxiquement incorrecte (Request[/lotsAdmin] does not contain handler parameter named dispatch).
    A mon avis, ce message-là signifie que, quelque part dans votre appli, vous appelez l'action de path /lotsAdmin sans paramètre dispatch.

    Donc, comme je l'ai demandé dans mon message précédent, comment est effectué le premier appel à la page adminLots.jsp ?
    sans doute via un appel de l'action de path /lotsAdmin sans paramètre dispatch ?
    Si c'est le cas, il faut le rajouter.
    Heu.. c'est pas deja ce que j'ai raconté avant ?

  11. #11
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Par défaut
    Nous appelons adminLots.jsp grâce à Admin.jsp
    Admin.jsp contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><a href="lotsAdmin.do">Mise à jour de la table LOTS</a></p>
    On a le message d'erreur lorsqu'on à l'appel de adminLots.jsp

    On va suivre vos conseils, regarder les tutoriels et essayer de voir ce qui ne va pas.

    Merci

  12. #12
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    Au risque de répondre tard, il manque le nom du formulaire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <SCRIPT>
       function setHidden(value){document.[b]formulaire[/b].hidden.value=value;}
    </SCRIPT>
    pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:form name="[b]formulaire[/b]">

  13. #13
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Par défaut
    Nous avons fait quelques modifications et notre problème est résolu

    Nous avons rajouté dans LotsAction.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)  throws Exception {
    		return liste(mapping, form, request, response);
    	}
    et dans adminLots.jsp, nous avons mis
    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
    <html:html>
    <head>
        <script language="JavaScript">
     
        function setDispatch(event)
    	{
       		document.getElementById('dispatch').value = event;
       		document.getElementById('lots').submit();
    	}
        </script>
    </head>
     
    <body>
    <html:form styleId="lots" action="/lotsAdmin">
     
    	<input type="hidden" name="dispatch" id="dispatch" value="defaut" />	
    	<button type="button" name="btListe" onclick="setDispatch('liste');">Liste</button>
    	<button type="button" name="btInit" onclick="setDispatch('initial');">Initialise</button>
    </html:form>
    </body>
    </html:html>
    et merci à tous

  14. #14
    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
    Citation Envoyé par SODTLSE
    Nous appelons adminLots.jsp grâce à Admin.jsp
    Admin.jsp contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><a href="lotsAdmin.do">Mise à jour de la table LOTS</a></p>
    On a le message d'erreur lorsqu'on à l'appel de adminLots.jsp

    On va suivre vos conseils, regarder les tutoriels et essayer de voir ce qui ne va pas.

    Merci
    J'arrive un peu tard pour répondre étant donné que vous avez trouvé une solution, mais pour ne pas avoir le message d'erreur, il suffisait de rajouter le paramètre dispatch en lui affectant le nom de la méthode à appeler comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link action="lotsAdmin?dispatch=methodeàappeler>Mise à jour de la table LOTS</html:link>
    N'oubliez pas le tag résolu.

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

Discussions similaires

  1. [Struts] pb avec l'opérateur '/'
    Par njac dans le forum Struts 1
    Réponses: 6
    Dernier message: 29/06/2004, 12h19
  2. [Struts] pb avec jsp:include
    Par njac dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 10/06/2004, 16h14
  3. [struts ] pb avec l'envoie d'un formulaire
    Par njac dans le forum Struts 1
    Réponses: 7
    Dernier message: 09/06/2004, 14h29
  4. [EJB2.1 Entity] [BMP] [Struts] Problème avec <logic:iterate>
    Par romain3395 dans le forum Java EE
    Réponses: 2
    Dernier message: 07/06/2004, 10h12
  5. [STRUTS] Problème avec des ActionForm
    Par zarbydigital dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/03/2004, 13h49

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