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 :

Cannot retrieve mapping for action


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut Cannot retrieve mapping for action
    Bonjour à tous,

    Je découvre la programmation en java à l aide des jsp. Abordant le chapitre Struts, je rencontre un problème pour leurs utilisations.

    Quand je cherche à acceder à ma jsp principal l'erreur suivante s'affiche.

    org.apache.jasper.JasperException: Cannot retrieve mapping for action: "/enregistrement"
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    Je cherche depuis bientôt 2 jours mais je n ai pas trouvé de solutions pour résoudre mon problème.

    Voici les différents fichiers de mon application:
    struts-config.xml:

    Code xml : 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
    <?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-beans>
    		<form-bean name="EnregistrementForm" type="monapp.EnregistrementForm"/>
    	</form-beans>
    	<action-mappings>
    		<action path="/monstruts" type="monapp.EnregistrementAction" name="EnregistrementForm" input="/enregistrement.jsp">
    			<forward name="ok" path="/ok.html"/>
    			<forward name="echec" path="/echec.html"/>
    		</action>
    	</action-mappings>
    </struts-config>
    web.xml
    Code xml : 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
    38
    39
    40
    41
    42
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    	xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    	version="2.4">
        <display-name>JavaBeans</display-name>
        <description>
         Dcouverte des JavaBeans
        </description>
     
        <!-- Action Servlet Configuration -->
        <servlet>
        	<servlet-name>action</servlet-name>
        	<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        	<init-param>
        		<param-name>config</param-name>
        		<param-value>/WEB-INF/struts-config.xml</param-value>
        	</init-param>
        	<load-on-startup>1</load-on-startup>
        </servlet>
     
        <!-- Action Servlet Mapping -->
        <servlet-mapping>
        	<servlet-name>action</servlet-name>
        	<url-pattern>*.do</url-pattern>
        </servlet-mapping>
     
        <!-- Struts Tag Library Descriptors -->
        <taglib>
        	<taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri>
        	<taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
        </taglib>
        <taglib>
        	<taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri>
        	<taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
        </taglib>
        <taglib>
        	<taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri>
        	<taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
        </taglib>
    </web-app>

    Ces 2 fichiers se trouvent sous WEB-INF.

    Ensuite j ai 2 classes java:

    EnregistrementForm.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
    package monapp;
    import org.apache.struts.action.*;
     
    public class EnregistrementForm extends ActionForm {
     
    	String Nom;
    	String Pass;
    	String PassConfirm;
     
    	String getNom(){return Nom;}
    	String getPass(){return Pass;}
    	String getPassConfirm(){return PassConfirm;}
     
    	public void setNom(String Nom){this.Nom = Nom;}
    	public void setPass(String Pass){this.Pass = Pass;}
    	public void setPassConfirm(String PassConfirm){this.PassConfirm = PassConfirm;}
     
    }
    et EnregistrementAction.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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    package monapp;
     
    import org.apache.struts.action.*;
    import javax.servlet.http.*;
    import java.sql.*;
    import java.io.*;
     
    //EnregistrementAction hrite de Struts Action
    public class EnregistrementAction extends Action{
     
    	//La mthode perform vient de Struts 1.0, remplace par la mthode exectue
    	//(gestion d'exception supplmentaire) de Struts 1.1
    	public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res){
     
    		//Casting de EnregistrementForm en tant qu'objet form
    		EnregistrementForm rf = (EnregistrementForm) form;
    		String nom = rf.getNom();
    		String pass = rf.getPass();
    		String passConfirm = rf.getPassConfirm();
     
    		//Implmentation de la logique mtier (vrification que les 2 mots de passes sont identiques et insertion dans la base de donnes)
    		if(pass.equals(passConfirm)){
    			//Chargement du pilote JDBC
    			try{Class.forName("org.gjt.mm.mysql.Driver");}
    			catch(java.lang.ClassNotFoundException e){
    				System.out.println("Pilote JDBC non trouv!");
    			}
    			try{
    				//connexion  la base de donnes
    				String url = "jdbc:mysql://localhost/madb?user=root&password=mysqlweb";
    				Connection con;
    				con = DriverManager.getConnection(url);
     
    				//Prparation et excution de la requte sql
    				PreparedStatement p = con.prepareStatement("insert into matable(nom, pass) values (?,?)");
    				p.setString(1, nom);
    				p.setString(2, pass);
    				ResultSet r = p.executeQuery();
    				p.close();
    			}//fin du try connexion  la base
    			// Renvoie l'exception en cas d'erreur base ou sql
    			catch(SQLException ex){
    				System.out.println("Erreur base de donnes");
    				System.out.println("Message: "+ ex.getMessage());
    				System.out.println("Mesasge: "+ ex.getSQLState());
    				System.out.println("Message: "+ ex.getErrorCode());
    			}
     
    			//Appel de l'objet ActionMapping pour envoyer vers le fichier ok.html
    			return mapping.findForward("ok");
    		}
    		else{
    			//Appel ActionMapping pour envoyer vers le fichier echec.html si le mot de passe de confirmation n'est pas le mme
    			return mapping.findForward("echec");
    		}
    	}
    }
    Ces 2 classes se trouvent sous le package monapp.

    Et pour finir 1 fichier jsp pour la saisie de l'information et 2 pages html pour retourner le résultat de l'opération.

    enregistrement.jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
     
    <html:form action="enregistrement">
    Nom:<html:text property="nom"/><br>
    Entrez le mot de passe:<html:password property="pass"/><br>
    Entrez le mot de passe  nouveau:<html:password property="passConfirm"/><br>
    <html:submit value="Enregistrement"/>
    </html:form>
    ok.html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <html>
    	<head>
    		<title>Ok</title>
    	</head>
    	<body>
    		Enregistrement r&eacute;ussi !
    		<br><a href="enregistrement.jsp">Enregistrer un autre membre</a>
    	</body>
    </html>
    et echec.html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <html>
    	<head>
    		<title>Echec</title>
    	</head>
    	<body>
    		Echec de l'enregistrement
    		<br><a href="enregistrement.jsp">Enregistrer un autre membre</a>
    	</body>
    </html>
    J'utilise les librairies struts 1.3.8 donc je ne sais pas si tous mes DOCTYPE sont corrects enfin il me semble.

    Merci aux bonnes âmes qui se pencheront sur mon problème.

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    A mon avis, tu regleras ton probleme dans un premier temps en remplacant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:form action="enregistrement">
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <html:form action="monstruts.do">
    Pourrais tu mettres les balises [CODE] pour encadré tout le code que tu as mis, il n'en sera que plus lisible.

  3. #3
    Membre confirmé
    Profil pro
    Developpeur
    Inscrit en
    Avril 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Avril 2004
    Messages : 160
    Par défaut
    Ben c'est normal. Dans ton struts-config, il n y'a pas d'action avec un path="enregistrment"

    et dans ta page jsp tu utilise:
    <html:form action="enregistrement">

    je pense que tu devrais mettre monstruts au lieu de enregistrement selon ton struts-config.

  4. #4
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    Voilà j ai modifié le code en mettant monstruts à la place de enregistrement et maintenant j ai une autre erreur qui vient il semblerait qu il ne trouve pas de méthode get() pour le paramètre Nom... Pourtant il me semble qu il a été déclaré correctement dans la classe EnregistrementForm.java!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    javax.servlet.ServletException: No getter method for property: "Nom" of bean: "monapp.EnregistrementForm"
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    	org.apache.jsp.enregistrement_jsp._jspService(enregistrement_jsp.java:75)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    Mais je dois surement m être trompé pour que cela ne fonctionne pas...

  5. #5
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    pourquoi pas dans ton ActionForm, mettre tes attributs en minuscule comme dans ta jsp pour qu'il puisse faire la correspondance correctement.

  6. #6
    Membre averti
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    Je viens d'essayer mais ça ne change rien... J ai recompilé ma classe java et j'ai tjs la meme erreur...

    J'ai cette configuration maintenant:

    enregistrement.jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
     
    <html:form action="monstruts.do">
    Nom:<html:text property="nom"/><br>
    Entrez le mot de passe:<html:password property="pass"/><br>
    Entrez le mot de passe  nouveau:<html:password property="passConfirm"/><br>
    <html:submit value="Enregistrement"/>
    </html:form>
    et EnregistrementForm.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
    package monapp;
    import org.apache.struts.action.*;
     
    public class EnregistrementForm extends ActionForm {
     
    	String nom;
    	String pass;
    	String passConfirm;
     
    	String getNom(){return nom;}
    	String getPass(){return pass;}
    	String getPassConfirm(){return passConfirm;}
     
    	public void setNom(String nom){this.nom = nom;}
    	public void setPass(String pass){this.pass = pass;}
    	public void setPassConfirm(String passConfirm){this.passConfirm = passConfirm;}
     
    }

  7. #7
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Et quel est ton mesage d'erreur maintenant?

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

Discussions similaires

  1. Message There is no Action mapped for action name
    Par tyzef dans le forum Struts 2
    Réponses: 17
    Dernier message: 15/09/2014, 13h59
  2. [Struts] Cannot retrieve definition for form bean
    Par Diablo_22 dans le forum Struts 1
    Réponses: 2
    Dernier message: 10/09/2009, 12h24
  3. Réponses: 5
    Dernier message: 03/07/2007, 14h06
  4. Cannot retrieve mapping for action /dologin
    Par gentil dans le forum Struts 1
    Réponses: 9
    Dernier message: 29/03/2007, 14h41
  5. Cannot retrieve definition for form bean:
    Par Baptiste Wicht dans le forum Struts 1
    Réponses: 11
    Dernier message: 10/10/2006, 19h27

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