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 1.3.5] je n'arrive pas à faire tourner un hello world


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 11
    Points
    11
    Par défaut [Struts 1.3.5] je n'arrive pas à faire tourner un hello world
    Bonjour, ca fait deux jours que je me bat avec Struts pour esayer de faire tourner un hello world.

    Voici l'erreur que je recoit lorsque j'essaye d'accéder à http://localhost:8080/MobileStock/Welcome :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    22 mai 2007 15:54:49 org.apache.struts.action.ActionServlet initChain
    INFO: Loading chain catalog from jar:file:/var/lib/tomcat-5.5/webapps/MobileStock/WEB-INF/lib/struts-core.jar!/org/apache/struts/chain/chain-config.xml
    22 mai 2007 15:54:50 org.apache.struts.chain.ComposableRequestProcessor init
    INFO: Initializing composable request processor for module prefix ''
    22 mai 2007 15:54:50 org.apache.struts.chain.commands.AbstractExceptionHandler execute
    ATTENTION: Unhandled exception
    org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.
            at org.apache.struts.chain.commands.AbstractSelectAction.execute(AbstractSelectAction.java:68)
            at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
            at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190
    ....
    (je vous épargne les kilometres de la pile d'appel)

    Voici mon 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
    13
    14
    15
    16
    17
    18
    19
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
              "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    <struts-config>
    	<form-beans>
    		<form-bean name="HelloForm" type="examples.hello.HelloForm"/>
    	</form-beans>
    	<action-mappings>
    		<action
    			path="/Welcome"
    			forward="/sayhello.jsp"
    		>
    			<!-- <forward name="SayHello" path="/sayhello.jsp"/> -->
    		</action>
    	</action-mappings>
      <message-resources parameter="examples.hello.Application"/>
    </struts-config>
    j'ai le fichier sayhello.jsp positionné qui est bien dans mon WAR (WebContent/sayhello.jsp)
    struts-config.xml se situe bien à l'endroit que j'ai indiqué dans mon web.xml.

    Qelqu'un saurait pourquoi il me dit qu'aucune action n'est attribuée à /Welcome ?
    Ca m'éviterai la défenestration
    Merci d'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
    Peux-tu préciser la version de Struts que tu utilises ?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    j'utilise une version 1.3.5

  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
    Il faudrait déjà pointer sur la dtd de Struts 1.3 et non la 1.1 dans ton struts-config.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
              "http://struts.apache.org/dtds/struts-config_1_3.dtd">

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Bien vu !

    Enfin même corrigé comme ça ca ne change rien, hélas.
    (c'est dans des moments comme ca que je regrette presque d'avoir choisi l'informatique GRR)

  6. #6
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Citation Envoyé par TiMiD
    lorsque j'essaye d'accéder à http://localhost:8080/MobileStock/Welcome :
    Ce ne serait pas "http://localhost:8080/MobileStock/Welcome.do" plutôt ?

  7. #7
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Bonjour,
    Tout d'abord il faudrait que tu creer une classe Action et que fasses references
    a celle ci dans struts-config.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <action
    			path="/Welcome"
    			forward="/sayhello.jsp"
                            type="examples.hello.actions.HelloAction"
    		>
    Pour la classe Action il faut qu'elle herite de org.apache.struts.action.Action
    ou de DispatchAction (regarde la doc de Struts).

    En effet la classe action joue le role du controleur. J'ai fait un schema qui explique une architecture avec Struts.
    http://gestcv.sourceforge.net/fr/architecture.html

    Si c'est ton probleme, je te conseille ensuite d'utiliser DispatchAction.
    J'ai tente d'expliquer sur http://gestcv.sourceforge.net/fr/arc...ts.html#Action Struts
    la raison pour laquel j'utilise DispatchAction.

    Angelo

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    cool ! ca sort une erreur différente maintenant, on progresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.lang.IllegalArgumentException: The path of an ForwardConfig cannot be null
            org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:65)
    J'ai modifié comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <action
    	path="/Welcome"
    	type      = "examples.hello.HelloAction"
    	name      = "HelloForm"
    	forward="/sayhello.jsp"
    >
    Bon je regarderai ca demain, la je rentre chez moi

  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
    Moi, je pensais que tu étais dans ce cas-là , ce qui explique que je n'ai pas parlé de préciser l'attribut type dans le mapping de l'Action de path Welcome.

    Donc, si tu as créé une Action, il faut plutôt coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <action
    	path="/Welcome"
    	type= "examples.hello.HelloAction"
    	name= "HelloForm">
       <forward name="success" path="/sayhello.jsp"/>
    </action>

  10. #10
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Voici comme je ferais :

    struts-config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		<action path="/Welcome" 
    				parameter="dispatch" 
    				name="HelloForm" 
    				validate="false" 
    				scope="request" 
    				type="examples.hello.HelloAction">
    			<forward name="display" path="/sayhello.jsp" redirect="false"/>
    		</action>
    Classe HelloAction :

    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
    public class HelloAction extends DispatchAction {
     
    		public ActionForward load(ActionMapping mapping, ActionForm actionForm, 
                                              HttpServletRequest request, 
                                              HttpServletResponse response) throws Exception {
     
    			return display(mapping, actionForm, request, response);
    		}
     
                  public ActionForward load(ActionMapping mapping, ActionForm actionForm, 
                                              HttpServletRequest request, 
                                              HttpServletResponse response) throws Exception {
     
    			return mapping.findForward("display");
    		}              
     
    }
    Et aprs tu appeles l'URL

    http://localhost:8080/MobileStock/Welcome?dispatch=load

    ou

    http://localhost:8080/MobileStock/We...?dispatch=load

    (en fonction de ta conf dans le web.xml)
    Ce qui est souvent utilise c'est le .do

    Angelo

  11. #11
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par c_nvy
    Moi, je pensais que tu étais dans ce cas-là , ce qui explique que je n'ai pas parlé de préciser l'attribut type dans le mapping de l'Action de path Welcome.

    Donc, si tu as créé une Action, il faut plutôt coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <action
    	path="/Welcome"
    	type= "examples.hello.HelloAction"
    	name= "HelloForm">
       <forward name="success" path="/sayhello.jsp"/>
    </action>
    Au départ, je voulais tester déja avec une page statique (sans action) pour voir si ca fonctionnait.

    Le code que tu cites est un code qu'on m'a proposé dans un précédent post, je l'ai testé, on sais jamais ! Surtout que dans le helloworld que j'ai il y avait déja les classes d'actions codées pour aller avec

    Sinon azerr, le code que tu proposes ne fait guère mieux
    j'ai juste une erreur différente si je rentre l'URL :
    http://localhost:8080/MobileStock/Welcome?dispatch
    (java.lang.NoSuchMethodException: Action[/Welcome] does not contain specified method)
    en ajoutant le =load, ca reviens à l'erreur de départ (org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.)

    Enfin bref merci pour vos réponses, je suis entrain de tester la version 2 qui a l'air de fonctionner vaguement mieux avec moi (je veux dire par là que l'exemple de base arrive à générer des pages sans erreurs !)

  12. #12
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Bonjour
    le parametre load est obligatoire, cela signifie que tu appeles la methodes load de ton action.

    As tu essaye avec le .do dans ton url?

    http://localhost:8080/MobileStock/We...?dispatch=load

    Sinon pour la version 2, ca n'a plus rien avoir avec Struts 1.x.
    Struts 2.x est base sur Werbwork. Il n'y a plus d'ActionForm par exemple.

    Angelo

  13. #13
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Je ne pense pas avoir besoin de rajouter .do, j'ai remplacé le *.do en * dans le fichier de conf parce que j'en avais envie (en remettant .do ca ne marche pas mieux de toute facons)

    Ce framework a l'air sympa, mais pour quelqu'un qui ne connait pas c'est vraiment obscur ...

  14. #14
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Une question bete, as tu verifie que ta classe HelloAction est dans ton Application WEB dans WEB-INF/classes/examples/hello/HelloAction.class

    Angelo

  15. #15
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Oui, le fichier est bien présent dans le .war

    Vu qu'il n'arrive même pas à afficher une page statique, je pense que le problème doit être autre part.


    Je me surprend à penser que J2EE pourrait bien endomager sèrieusement ma santé mentale

  16. #16
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Ton problème commence à se ramifier et avec l'accumulation des propositions,on ne sait plus quel sont les différents paramètres (struts-config surtout, ainsi que les classes).

    Alors si tu veux bien, je te propose de redémarrer à 0, càd à la version initiale.

    Je ne comprends pas pourquoi tu essaies d'accéder directement à une action ! Normalement, tu dois commencer par une page où tu remplis un formulaire, et ensuite l'action est appelée, n'est ce pas ?

    Autre chose : si on parle du même exemple, le fameux Say Hello, je pense que tu as un peu mélangé les choses : le global forward Welcome avec l'action sayHello !

    Pour mettre fin à ce brouillard, veux tu STP nous fournir TOUT : struts-config, les pages JSP et tes classes ?

Discussions similaires

  1. Ce que je n'arrive pas à faire ou à trouver.
    Par warwink dans le forum Windows Vista
    Réponses: 13
    Dernier message: 16/06/2006, 17h00
  2. [SQL-Server] Je n'arrive pas à faire tourner php avec Sql server (2005)
    Par bluecurve dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/03/2006, 18h50
  3. Une requête que je n'arrive pas à faire
    Par Denti-fritz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/12/2005, 13h53
  4. Très débutant : je n'arrive pas à faire fonctionner le JDK
    Par miltonis dans le forum Général Java
    Réponses: 20
    Dernier message: 19/10/2005, 21h20
  5. [RegEx] je n'arrive pas à faire deux regex(s?)
    Par sloshy dans le forum Langage
    Réponses: 5
    Dernier message: 17/10/2005, 16h21

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