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 :

[débutant]Pb configuration de l appli, redir vers un fichier vide.


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 80
    Par défaut [débutant]Pb configuration de l appli, redir vers un fichier vide.
    Salut a tous,

    Je suis débutant en Struts, et j'ai un phénomène qui se produit souvent, je ne sais pas d'ou il vient, quel que soit mon script (en gal, recuperation des valeurs d'un form).

    Lorsque je valide un formulaire, j arrive sur ma page upload.do Vide !
    J'imagine donc qu il n y a pas de mappage entre le upload.do et le upload.jsp dans mon struts-config, mais je ne vois pas ou est le souci.
    Voici le code :

    Mon FormBean :

    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 julien;
     
    import javax.servlet.http.HttpServletRequest;
     
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.upload.FormFile;
     
    public class UploadActionForm extends ActionForm
    {
       protected FormFile fichier;
     
       public FormFile getFichier() 
       {   
    	  return fichier;
       }
     
       public void setFile(FormFile fichier) 
       {
    	  this.fichier = fichier;
     
       }
       public ActionErrors validate(ActionMapping mapping,
    		HttpServletRequest request) {
    			ActionErrors erreurs = new ActionErrors();
    			return erreurs;
    	}
    }
    Mon 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package julien;
     
    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 org.apache.struts.upload.FormFile;
     
    public class UploadAction extends Action{
     
    	public ActionForward execute(ActionMapping mapping,
    					   ActionForm form,
    					   HttpServletRequest request,
    					   HttpServletResponse response)
    					   throws IOException, ServletException {
     
    		final FormFile myFile;
    	   String cible = new String("succes");
     
    	   if ( form != null ) {
    		 UploadActionForm UAFile = (UploadActionForm)form;
    		 myFile = UAFile.getFichier();
    	   }
    	   else
    		 cible = new String("echec");
     
    	   return (mapping.findForward(cible));
    	 }
    }
    mon struts-config :
    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
              "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
    <struts-config>
     
      <!-- ========== Form Bean Definitions =================================== -->
     
      <form-beans>
    	  <form-bean  name="myUpload" type="julien.UploadActionForm"/>
      </form-beans>
     
      <action-mappings>
        <action   path="/upload"
                  type="julien.UploadAction"
                  name="myUpload"
                  scope="request"
                  validate="false"
                  input="upload.jsp">
        <forward name="succes" path="upload.jsp" />
        <forward name="echec" path="index.jsp" />    
        </action>
      </action-mappings>
    </struts-config>

    mon 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
    <%@ page language="java" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
     
    <html:html >
    <head>
    <html:base/>
    </head>
    <body bgcolor="white">
    <html:errors/>
     
    <html:form action="/upload.do" method="post" enctype="multipart/form-data">
      <html:file property="fichier"></html:file>
      <html:submit>validez</html:submit>
    </html:form>
    </body>
    </html:html>
    Donc, ma console ne retourne pas d'erreur, pourtant, mon apres soumission du form, mon action upload.do me retourne une page vide .
    Avez vous une idée ???

  2. #2
    Membre expérimenté Avatar de Pikwik
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 237
    Par défaut


    Met chaqu'un de tes code entre balises CODE /CODE STP.
    et met un peut d'indentation dans tout ca.

    Evite cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if ( form != null ) {
    UploadActionForm UAFile = (UploadActionForm)form;
    myFile = UAFile.getFichier();
    }
    else
    cible = new String("echec");
    Mais écrit plustot comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if ( form != null ) {
      UploadActionForm UAFile = (UploadActionForm)form;
      myFile = UAFile.getFichier();
    } else {
      cible = new String("echec");
    }
    C'est plus lisible et ca évite les erreurs de code, qui provoquent pire que des erreurs, des BON GROS BUG !

    Je n'ai rien contre if ( condition ) instruction;
    mais if ( condition ) { instructions;} else instruction; c'est pas très propre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    final FormFile myFile;
    String cible = new String("succes");
    Ces variables sont implicitement protected. C'est pas très propre, met private ou protected, comme tu veux, mais explicite ta déclaration.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public FormFile getFichier() 
    { 
    return fichier;
    }
     
    public void setFile(FormFile fichier) 
    {
    this.fichier = fichier;
     
    }
    Erreur dans ton bean, setFile ou setFichier il faut choisir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public FormFile getFichier() 
    { 
      return fichier;
    }
     
    public void setFichier(FormFile fichier) 
    {
      this.fichier = fichier;
    }
    Me parait plus juste ( Struts ne génére pas d'exception pour ces erreurs là, il touche même pas a ta variable Fichier).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    protected FormFile fichier;
    j'aurai plustot mis les properties en private dans tes beans, mais c'est un avis personnel.

    Corrige déjà ca, et pose le nouveau code qu'on regarde plus en détails.

    A ++ !

  3. #3
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Tes JSP sont bien a la racine de ton appli?
    Si c'est le cas met un "/" devant le nom de tes JSP dans le fichier de config.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <forward name="succes" path="/upload.jsp" />
    <forward name="echec" path="/index.jsp" />

    J'espere que c'est cela. Moi aussi je debute et j'ai fait à peu près le meme truc cette aprem et ca marche, donc ca doit etre un truc tout bete!

  4. #4
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Deuxieme solution à laquelle je n'avais pas fait attention,

    ta classe UploadActionForm est bien dans le package julien?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 80
    Par défaut
    Alors, pour commencer dsl pour l'indentation, le code, etc.... c mon premier post....
    Je vais changer ca.
    Ensuite, pour les reponses, effectivement, le code est dans le bon package, et j'ai essayé le slash, mais ca ne change rien...

    je vous rejoins les sources plus belles
    Mon FormBean

    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 julien;
     
    import javax.servlet.http.HttpServletRequest;
     
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.upload.FormFile;
     
    public class UploadActionForm extends ActionForm
    {
       private FormFile fichier;
     
       public FormFile getFichier() 
       {   
    	  return fichier;
       }
     
       public void setFichier(FormFile fichier) 
       {
    	  this.fichier = fichier;
     
       }
       public ActionErrors validate(ActionMapping mapping,
    		HttpServletRequest request) {
    			ActionErrors erreurs = new ActionErrors();
    			return erreurs;
    	}
    }
    Mon 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    package julien;
     
    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 org.apache.struts.upload.FormFile;
     
    public class UploadAction extends Action{
     
    	public ActionForward execute(ActionMapping mapping,
    					   ActionForm form,
    					   HttpServletRequest request,
    					   HttpServletResponse response)
    					   throws IOException, ServletException {
     
    	   final FormFile myFile;
    	   String cible = new String("succes");
     
    	   if ( form != null ) {
    		 UploadActionForm UAFile = (UploadActionForm)form;
    		 myFile = UAFile.getFichier();
    	   }
    	   else
    		 cible = new String("echec");
     
    	   return (mapping.findForward(cible));
    	 }
    }
    mon 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
              "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
    <struts-config>
      <!-- ========== Form Bean Definitions =================================== -->
     
      <form-beans>
    	  <form-bean  name="myUpload" type="julien.UploadActionForm"/>
      </form-beans>
     
      <action-mappings>
     
     
        <action   path="/upload"
                  type="julien.UploadAction"
                  name="myUpload"
                  scope="session"
                  validate="false"
                  input="/upload.jsp">
        <forward name="succes" path="/upload.jsp" />
        <forward name="echec" path="/index.jsp" />    
     
        </action>
     
      </action-mappings>
     
     
    </struts-config>
    et ma jsp avec mon formulaire
    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
     
    <%@ page language="java" %>
     
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
     
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
     
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
     
     
     
    <html:html locale="true">
     
    <head>
     
    <title><bean:message key="index.title"/></title>
     
    <html:base/>
     
    </head>
     
    <body bgcolor="white">
    <html:errors/>
     
     
    <html:form action="/upload.do" method="post" enctype="multipart/form-data">
       <html:file property="fichier"></html:file>
       <html:submit>validez</html:submit>
    </html:form>
     
     
     
    </body>
     
    </html:html>
    voila, j espere que c mieux, dsl pour la lisibilité du premier post

  6. #6
    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
    Billets dans le blog
    1
    Par défaut
    Tu devrais mettre le code de ton action dans un bloc try catch.
    Si une exception est levée, rien n'est renvoyé dans ton cas...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    On va commencer simple,

    Ton fichier web.xml, tu peux le mettre aussi.

    Et peux-tu essayer de mettre un breakpoint dans ta fonction execute, pour voir s'il passe bien dedans!

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 80
    Par défaut
    Ben, j arrive pas trop a gerer le debogage, je ne voit pas qu'il y arrive en tout cas...

    Ma console me sort ce message, pour moi, ca ne dit rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [03/01/07 16:44:44:266 CET] 1d3f1d3f WebGroup      I SRVE0180I: [fichier.war] [/fichier] [Servlet.LOG]: action: Processing a POST for /upload
    [03/01/07 16:44:44:266 CET] 1d3f1d3f WebGroup      I SRVE0180I: [fichier.war] [/fichier] [Servlet.LOG]: action:  Looking for ActionForm bean under attribute 'myUpload'
    [03/01/07 16:44:44:266 CET] 1d3f1d3f WebGroup      I SRVE0180I: [fichier.war] [/fichier] [Servlet.LOG]: action:  Recycling existing ActionForm bean instance of class 'julien.UploadActionForm'
    [03/01/07 16:44:44:266 CET] 1d3f1d3f WebGroup      I SRVE0180I: [fichier.war] [/fichier] [Servlet.LOG]: action:  Populating bean properties from this request
    [03/01/07 16:44:44:297 CET] 1d3f1d3f WebGroup      I SRVE0180I: [fichier.war] [/fichier] [Servlet.LOG]: action:  Validating input form properties
    [03/01/07 16:44:44:297 CET] 1d3f1d3f WebGroup      I SRVE0180I: [fichier.war] [/fichier] [Servlet.LOG]: action:  Looking for Action instance for class julien.UploadAction
    [03/01/07 16:44:44:312 CET] 1d3f1d3f WebGroup      I SRVE0180I: [fichier.war] [/fichier] [Servlet.LOG]: action:   Double checking for Action instance already there
    [03/01/07 16:44:44:312 CET] 1d3f1d3f WebGroup      I SRVE0180I: [fichier.war] [/fichier] [Servlet.LOG]: action:   Creating new Action instance
    et mon fichier web.xml le voila :
    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
    58
    59
    60
    61
    62
    63
     
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
     
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
     
      "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    <web-app>
      <!-- Standard Action Servlet Configuration (with debugging) -->
     
      <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>application</param-name>
          <param-value>ApplicationResources</param-value>
        </init-param>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>2</param-value>
        </init-param>
        <init-param>
          <param-name>detail</param-name>
          <param-value>2</param-value>
        </init-param>
        <init-param>
          <param-name>validate</param-name>
          <param-value>true</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
      </servlet>
      <!-- Standard Action Servlet Mapping -->
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      <!-- The Usual Welcome File List -->
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <!-- Struts Tag Library Descriptors -->
     
      <taglib>
        <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
      </taglib>
     
      <taglib>
        <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
      </taglib>
     
    </web-app>
    Malheureusement, je ne pense pas qu'il y ait d'erreurs la dedans, c WSAD qui me le genere. PS : Je tourne sur un serveur Websphere.

    Merci pour vos reponses en tout cas, c tres sympa de partager.

  9. #9
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Désolé je ne vois pas du tout d'ou proviens ton erreur, j'ai copier ton code et chez moi ca passe niquel. (tomcat 5).

    Le seul truc qu'il est possible et qu'il ne trouve pas ta jsp upload car moi j'ai juste changer le chemin par une jsp à moi, que j'avais mis dans un dossier page. Mais si ta jsp est bien a la racine de ton projet je ne vois pas du tout le probleme.

  10. #10
    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
    Billets dans le blog
    1
    Par défaut
    Je ne pense pas que tu as un problème dans le paramétrage (en tout cas je ne vois rien d'anormal ici)...
    Par contre, je suppose que ta méthode execute se plante et du coup, tu ne fais pas le return (mapping.findForward(cible)); (d'où page blanche)
    Tu devrais mettre le code dans try/catch comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String cible = "succes";
    try 
    {
    ...   ton traitement ...
    } 
    catch (Throwable t) 
    {
       cible = "echec";
       System.out.println(t.getMessage()); // Par exemple
    }
    return mapping.findForward(cible);
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Appli Access vers MySQL
    Par Eouzan dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2006, 23h47
  2. Réponses: 2
    Dernier message: 03/03/2006, 10h22
  3. appli migrée vers Windows 2003
    Par Trulane dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 27/10/2005, 14h22
  4. [ Info ] Portage appli C++ vers Plugin Eclipse
    Par fredmel dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/10/2005, 14h33
  5. [Débutant(e)] [Configuration] variables d'environnement
    Par ENIT-Info dans le forum Tomcat et TomEE
    Réponses: 11
    Dernier message: 25/02/2005, 15h45

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