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.8] bloqué après l'action "do"


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 101
    Points : 57
    Points
    57
    Par défaut [Struts 1.3.8] bloqué après l'action "do"
    Bonjour,

    Je débute en Struts et j'essaie de faire fontionner un pauvre formulaire en vue de créer un site (y'a encore du boulot...). Bref, j'ai l'impression que tout est correct mais quand je valide le formulaire, rien ne se passe, ça reste bloqué et la console indique :
    Initialize action of type: com.montana.occasion.actions.ActionInscription
    Voici mon code :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4">
    	<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>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>action</servlet-name>
    		<url-pattern>*.do</url-pattern>
    	</servlet-mapping>
    	<welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>
    	<jsp-config>
    		<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>
    	</jsp-config>
    </web-app>

    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
    17
    <!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="user" type="com.montana.occasion.bean.User"/>
    	</form-beans>
    	<action-mappings>		
    		<action
    		path="/inscription"
    		type="com.montana.occasion.actions.ActionInscription"
    		validate="true"
    		name="user"
    		scope="session"
    		input="/inscription.jsp">
    		<forward name="success" path="/inscription_result.jsp"/>
    		</action>
    	</action-mappings>
    </struts-config>

    com.montana.occasion.bean.User :
    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
    package com.montana.occasion.bean;
    import javax.servlet.http.HttpServletRequest;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;
     
    public class User extends ActionForm {
    	static final long serialVersionUID = 1L;
    	String nom, message;
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public String getMessage() {
    		return message;
    	}
    	public void setMessage(String message) {
    		this.message = message;
    	}
     
    	public ActionErrors validate (ActionMapping  mapping, HttpServletRequest request) {
    		ActionErrors errors = new ActionErrors();
    		if (nom.equals("")) {
    			errors.add("nom", new ActionMessage("Veuillez entrer un nom"));
    		}
    		return errors;
    	}
    }
    com.montana.occasion.actions.ActionInscription :
    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
    package com.montana.occasion.actions;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import com.montana.occasion.bean.User;
     
    public class ActionInscription extends Action {
     
    	public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    		User user = (User) form;
    		user.setMessage("Bonjour, " + user.getNom());
    		return (mapping.findForward("success"));
    	}
    }
    inscription.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
    16
    17
    18
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="WEB-INF/tld/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="WEB-INF/tld/struts-html.tld" prefix="html" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Inscription</title>
    </head>
    <body>
          <html:form action="/inscription.do">
             Nom : <html:text property="nom" size="20"/>
    	<html:submit>Valider</html:submit>
    	</html:form>
     
    </body>
    </html>
    inscription_result.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
    16
    17
    18
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="WEB-INF/tld/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="WEB-INF/tld/struts-html.tld" prefix="html" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    Résultats
    <br/>
    <jsp:getProperty name="user" property="nom"/><br/>
    <jsp:getProperty name="user" property="message"/>
    <br/><br/>
    </body>
    </html>
    Où est-ce que j'ai oublié un truc ? Merci de votre aide !

  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
    Remplace la méthode perform par la méthode execute dans l'Action ActionInscription.

    Sinon, pour info, comme tu es en J2EE 1.4 (Servlet 2.4/JSP 2.0), les tld présentes dans le répertoire META-INF du jar struts-taglib-1.3.8.jar sont automatiquement chargées par le serveur.
    Tu peux donc enlever la définition des tld du web.xml, supprimer les tlds du répertoire WEB-INF/tld et les référencer directement dans les jsp via leurs uri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
    Il faut également ajouter la balise load-on-startup pour l'ActionServlet dans le web.xml pour lui dire de charger l'ActionServlet au démarrage de l'application :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <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>

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 101
    Points : 57
    Points
    57
    Par défaut
    Merci ça marche pour le execute !

    Pour la balise load-on-startup je l'avais mise mais j'ai fait quelques "coupes" dans le code pour allèger le post...

    Pour la version J2EE, je n'en suis pas sûr. Je suis en JDK 1.6 avec un Tomcat 5.5, le <web-app version="2.4"> c'est juste un copier-coller.

  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
    Si tu es en Tomcat 5.5, tu peux travailler en J2EE 1.4.

    Je te conseille de remplacer ta balise web-app par celle-ci dans ton web.xml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <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">
    En spécifiant la xsd, la grammaire de ton fichier web.xml sera vérifiée.
    C'est quand même plus sûr.

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/11/2008, 21h26
  2. Réponses: 6
    Dernier message: 23/02/2006, 09h47
  3. [Struts] changer l'url affiché apres un forward
    Par mauvais_karma dans le forum Struts 1
    Réponses: 5
    Dernier message: 31/08/2005, 13h31
  4. [Struts][struts-config.xml] question sur l element action
    Par SEMPERE Benjamin dans le forum Struts 1
    Réponses: 3
    Dernier message: 08/10/2004, 16h25
  5. [Eclipse][Struts][Tomcat] Erreur Http 503 La servlet action.
    Par minique dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 20/09/2004, 17h44

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