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] Erreur : org.apache.struts.actions.ForwardAction


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Points : 82
    Points
    82
    Par défaut [Struts 1.3] Erreur : org.apache.struts.actions.ForwardAction
    Bonjour,

    Voila j'ai un soucis, je tente d'ecrire un petit exemple de code sous struts mais impossible de le faire marcher. Il s'agit d'une simple page qui affiche un formulaire Nom, Prenom, adresse mail et qui lorsque que l'on le valide transmet à une seconde page jsp le resultat.

    Voila la page d'accueil "monFormulaire.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
    15
     
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <html:html>
    <head>
    	<title>Mon formulaire</title>
    </head>
    <body>
    	<html:form action="/Input.do">
    		nom <html:text property="nom"></html:text><br>
    		prenom <html:text property="prenom"></html:text><br>
    		adresse email <html:text property="email"></html:text><br>
    		<html:submit />
    	</html:form>
    </body>
    </html:html>
    Ma page de destination "affiche.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
     
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <html:html>
    <head>
    	<title>Pag affiche</title>
    </head>
    <body bgcolor="white">
    Bonjour <bean:write name="identityForm" property="prenom"/>
    		<bean:write name="identityForm" property="nom"/>
    Nous pouvons vous ecrire au : 
    		<bean:write name="identityForm" property="email"/>
    </body>
    </html:html>
    Mon fichier 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?xml version="1.0" encoding="ISO-8859-1" ?>
     
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
              "http://struts.apache.org/dtds/struts-config_1_3.dtd">
     
    <struts-config>
     
    <!-- ================================================ Form Bean Definitions -->
     
        <form-beans>
        	<form-bean
                name="identiteForm"
                type="home.actionform.MonFormulaireForm"/>
        </form-beans>
     
    <!-- =========================================== Action Mapping Definitions -->
     
        <action-mappings>
     
        	<action
        		path="/Welcome"
        		forward="/pages/monFormulaire.jsp"/>
     
            <action
                name="identiteForm"
                path="/Input"
                type="org.apache.struts.actions.ForwardAction"
                parameter="/pages/affiche.jsp"/>
     
        </action-mappings>
     
    <!-- ======================================== Message Resources Definitions -->
     
        <message-resources parameter="java.MessageResources" />
     
    </struts-config>
    et ma classe java "MonFormulaireForm.java" :

    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
    26
    27
    28
    29
    30
    package home.actionform;
     
    import org.apache.struts.action.ActionForm;
     
    public class MonFormulaireForm extends ActionForm {
     
    	private static final long serialVersionUID = -8613251001396622334L;
    	private String nom = null;
    	private String prenom = null;
    	private String email = null;
     
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public String getPrenom() {
    		return prenom;
    	}
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
    	public void setEmail(String email) {
    		this.email = email;
    	}
    	public String getEmail() {
    		return email;
    	}
    }
    En executant ce code sur un serveur tomcat classique il me sort apres la validation de mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    javax.servlet.ServletException: org.apache.struts.actions.ForwardAction
    	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    qqun à une idée ? La je craque

  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
    Je ne suis pas certaine que la classe ForwardAction fonctionne en Struts 1.3.

    Il vaudrait mieux créer une Action qui, dans un premier temps pour ton test, fait seulement un forward et la définir comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action path="/Input" type="tonpackage.InputAction" name="identiteForm">
        <forward name="success" path="/pages/affiche.jsp"/>
    </action>

    Sinon, trois remarques :

    La prochaine fois, poste la stacktrace complète de l'erreur.

    Dans affiche.jsp, le nom du form-bean est incorrect.

    Evite de définir un package qui commence par java. C'est réservé.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Points : 82
    Points
    82
    Par défaut
    merci pour ta reponse, J'ai corrigé pour la jsp 'affiche.jsp'

    Merci aussi pour les conseils. ^^

    Sinon en créant une action je suis obligé de créer une classe "tonpackage.InputAction" pour une redirection.

    Tu me conseils de revenir à struts 1.2 ? Parceque la je suis un guide qui tourne sous strust 1.2 et c'est vrai qu'il y a pas mal de différence...

  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
    Non, il n'est pas utile de revenir en Struts 1.2.
    Personnellement, je n'ai jamais utilisé la ForwardAction, même en Struts 1.2.

    De toute manière, tu seras bien obligé de créer une Action à un moment donné pour traiter ce qui a été saisi dans le formulaire non ?
    Tu ne vas pas te contenter d'afficher le résultat de la saisie ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Points : 82
    Points
    82
    Par défaut
    C'est vrai je vais etre amener à traiter le resultat d'une saisie mais je me suis dit que c'etait dommage de passer à coté de se genre de chose.
    En fait c'est pour la gestion des balise type "nested" que ça peut devenir interessant.

    Mais remarque on peut la aussi passer par un controleur pour chaque affichage mais ça aurait economiser du code de faire un controleur à la fin de la saisie.
    Faut absoluement que je trouve comment faire en struts 1.3 on sait jamais ))))

  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
    En fait, après vérification, tu peux utiliser la classe ForwardAction en Struts 1.3.
    Elle se trouve dans le jar struts-extras-1.3.n.jar.
    Il faut donc l'ajouter à ton projet.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Points : 82
    Points
    82
    Par défaut
    C'est bizarre que ça ne marche pas puisque cette bibliotheque est incorporée dans mon projet ... J'avais deja lu un post là-dessus mais ça n'a rien changé.
    C'est bizarre !

    Je te mets la trace complete de l'erreur :

    type Rapport d'exception

    message

    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    javax.servlet.ServletException: org.apache.struts.actions.ForwardAction
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)


    cause mère

    java.lang.ClassNotFoundException: org.apache.struts.actions.ForwardAction
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)
    org.apache.struts.chain.commands.util.ClassUtils.getApplicationClass(ClassUtils.java:54)
    org.apache.struts.chain.commands.util.ClassUtils.getApplicationInstance(ClassUtils.java:71)
    org.apache.struts.chain.commands.servlet.CreateAction.createAction(CreateAction.java:98)
    org.apache.struts.chain.commands.servlet.CreateAction.getAction(CreateAction.java:68)
    org.apache.struts.chain.commands.AbstractCreateAction.execute(AbstractCreateAction.java:91)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)


    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.27.


    --------------------------------------------------------------------------------

  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
    N'aurais-tu pas par hasard des jars de plusieurs versions de Struts dans ton projet ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Points : 82
    Points
    82
    Par défaut
    Alors ça y est je viens de trouver et oui tu avais raison il me manquait le jar :
    struts-extras-1.3.n.jar dans WEB-INF

    Ce que je ne comprend pas c'est que j'ai declaré un ensemble de bibliotheque utilisateur nommé struts qui reprend l'integralité des bibliotheque struts 1.3 et que ça n'est pas fonctionné...

    Enfin voila comme ça ça marche ))))

  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
    Je ne sais pas quel IDE tu utilises mais sous Eclipse par exemple, si tu ajoutes une user library, les jars contenus dans celle-ci seront visibles sous Eclipse mais ne seront pas déployés dans le war sous WEB-INF/lib.
    En principe, on ajoute les jars que l'on veut déployer dans le war via Properties->J2EE Module Dependencies. Ainsi, ils apparaîtront sous Libraries->Web App Libraries, ce qui signifie qu'ils seront déployés dans le war sous WEB-INF/lib.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Points : 82
    Points
    82
    Par défaut
    Oui j'utilise aussi eclipse et lorsque j'ai crée le projet j'ai recupéré le war "blank" mis à disposition par struts et sous eclipse j'ai juste ajouter une libraire contenant le reste des librairies non fournir dans le war "blanck" ce qui explique le probleme. Je retiens le Properties->J2EE Module Dependencies. je vais essayer pour voir ))))

    Encore mille mercis à toi

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    En principe, on ajoute les jars que l'on veut déployer dans le war via Properties->J2EE Module Dependencies. Ainsi, ils apparaîtront sous Libraries->Web App Libraries, ce qui signifie qu'ils seront déployés dans le war sous WEB-INF/lib.
    Encore plus simple, on copie les jar dans /WEB-INF/lib et ils sont automatiquement ajoutés au path

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/10/2008, 14h01
  2. Réponses: 2
    Dernier message: 09/08/2007, 16h36
  3. Réponses: 2
    Dernier message: 06/04/2007, 15h04
  4. Réponses: 2
    Dernier message: 15/01/2007, 14h42
  5. Réponses: 3
    Dernier message: 20/10/2006, 23h53

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