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 :

problème avec <html:form>


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut problème avec <html:form>
    salut tt le monde,
    je viens de commencer un projet en struts 1.3.9 et je me bloque au niveau d'un formulaire de saisie.
    le pb c que au niveau de la tag <html:form> je spécifie le nom du bean dans lequel vont être stocker les valeurs du bean ainsi que le type obligatoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:form action="/main" name="frmPersonne" type="org.apache.struts.actions.ForwardAction">
    mais pourtant il me donne une erreur que je ne comprend pas à propos de la mise a jour du nom (name)!!!!!!!!!!!!!!!!!
    et voila l'erreur survenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    exception 
     
    javax.servlet.ServletException: /vues/formulaire.personne.jsp(19,0) Impossible de trouver une méthode de mise à jour pour l'attribut: name
    	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    merci d'avance.

  2. #2
    Expert confirmé

    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
    Par défaut
    Les attributs name et type n'existent plus dans le tag form depuis Struts 1.2.
    Il faut juste coder le path de l'Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:form action="/main">
    Ces attributs étant déjà définis dans le struts-config.xml, dans le mapping de l'Action de path /main, Struts les retrouve automatiquement.

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    merci pour ta réponse,
    mais dans ce cas comment je doit configurer struts-config.xml, est ce que ça devrait être de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <action
    path="/main"
    name="frmPersonne"
    scope="session"
    input="erreurs.do"
    parameter="/vues/main.html"
    type="org.apache.struts.actions.ForwardAction"
    />
    est ce qu'il ya quelque chose qui manque?

  4. #4
    Expert confirmé

    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
    Par défaut
    Dans les versions récentes de Struts, on n'utilise plus la classe org.apache.struts.actions.ForwardAction.

    Il faut donc créer une Action qui s'exécutera au submit du formulaire et qui effectuera le forward vers la page main.html et la définir comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action path="/main" type="nomDuPackage.MainAction"
            name="frmPersonne" scope="session" validate="true" input="erreurs.do">
       <forward name="success" path="/vues/main.html"/>
    </action>

  5. #5
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    merci c_nvy pour m'avoir répondu mais pour éxecuter la méthode execute le classe Action il avoir d'abord un formulaire valide et dans ce je pense qu'il n'aura pas l'occasion de valider le formulaire s'il passe à execute directement.

  6. #6
    Expert confirmé

    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
    Par défaut
    Il va d'abord exécuter la méthode validate de l'ActionForm et s'il y a des erreurs de validation, il redirigera vers la page définie dans l'attribut input, soit dans ton cas, il exécutera l'Action de path /errreurs.
    S'il n'y a pas d'erreur de validation alors il exécutera la méthode execute de l'Action de path /main.
    Quoi qu'il en soit, pour que la page jsp dans laquelle se trouve le formulaire puisse s'afficher, il faut créer l'Action de path /main.

  7. #7
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    re:salut,
    j'ai essayé ce vous venez de me dire mais ca ne marche pas.
    sachant que la méthode execute s'execute mais la méthode validate du bean non plus
    est ce que ca pourrait être une erreur de déclaration du form bean?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form-beans>
    <form-bean name="frmPersonne" type="istia.st.struts.personne.FormulaireBean" />
    </form-beans>

  8. #8
    Expert confirmé

    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
    Par défaut
    Peux-tu montrer le code de l'ActionForm FormulaireBean ?

  9. #9
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    voila le code du Formulaire Bean que j'utilise:
    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
    package istia.st.struts.personne;
     
    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 FormulaireBean extends ActionForm {
    /**
             * 
             */
    	private static final long serialVersionUID = 1L;
    // nom
    private String nom = null;
    public String getNom() {
    return nom;
    }
    public void setNom(String nom) {
    this.nom = nom;
    }
    // age
    private String age = null;
    public String getAge() {
    return age;
    }
    public void setAge(String age) {
    this.age = age;
    }
     
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    //	 gestion des erreurs
    	ActionErrors erreurs = new ActionErrors();
    //	 le nom doit être non vide
    	if (nom == null || nom.trim().equals("")) {
    	erreurs.add("nomvide", new ActionMessage("personne.formulaire.nom.vide"));
     
    //	 l'âge doit être un entier positif
    	}
    	if (age == null || age.trim().equals("")) {
    	erreurs.add("agevide", new ActionMessage("personne.formulaire.age.vide"));
    	}
    	else {
    //	 l'âge doit être un entier positif
    	if (!age.matches("^\\s*\\d+\\s*$")) {
    	erreurs.add("ageincorrect", new ActionMessage("personne.formulaire.age.incorrect", age));
    //	 on rend la liste des erreurs
    	}
    	} //if
    //	 on rend la liste d'erreurs
    	return erreurs;
    	}
    }

  10. #10
    Expert confirmé

    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
    Par défaut
    L'ActionForm FormulaireBean semble correcte.
    Peux-tu poster le struts-config.xml complet et la jsp ?

  11. #11
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    bon, voila le 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
    38
    39
    40
    <?xml version="1.0" encoding="ISO-8859-1" ?>
     
     
    <!DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
    "http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
    <struts-config>
    <form-beans>
    <form-bean name="frmPersonne" type="istia.st.struts.personne.FormulaireBean" />
    </form-beans>
     
    <action-mappings>
     
     
    <action path="/main" type="istia.st.struts.personne.FormulaireAction"
            name="frmPersonne" scope="session" validate="true" input="erreurs.do">
       <forward name="reponse" path="/vues/reponse.personne.jsp"/>
    </action>
     
     
    <action
    path="/erreurs"
    parameter="/vues/erreur.personne.jsp"
    type="org.apache.struts.actions.ForwardAction"
    />
     
    <action
    path="/reponse"
    parameter="/vues/reponse.personne.jsp"
    type="org.apache.struts.actions.ForwardAction"
    />
     
    <action
    path="/formulaire"
    parameter="/vues/formulaire.personne.jsp"
    type="org.apache.struts.actions.ForwardAction"
    />
    </action-mappings>
    <message-resources parameter="ressources.personneressources"/>
    </struts-config>
    et ici le code la jsp 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
    36
    37
    38
    39
    40
    41
    42
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
    <html>
    <meta http-equiv="pragma" content="no-cache">
    <head>
    <title>Personne - formulaire</title>
    <script language="javascript">
    function effacer(){
    with(document.frmPersonne){
    nom.value="";
    age.value="";
    }
    }
    </script>
    </head>
    <body>
    <center>
    <h2>Personne - formulaire</h2>
    <hr>
    <html:form action="/main" >
    	<table>
    		<tr>
    			<td>Nom</td>
    			<td><html:text property="nom" size="20" /></td>
    		</tr>
    		<tr>
    			<td>Age</td>
    			<td><html:text property="age" size="3" /></td>
    		</tr>
    		<tr>
    	</table>
    	<table>
    		<tr>
     
    			<td><html:submit value="Envoyer" /></td>
    			<td><html:reset value="Rétablir" /></td>
    			<td><html:button property="btnEffacer" value="Effacer"
    				onclick="effacer()" /></td>
    		</tr>
    	</table>
    </html:form></center>
    </body>
    </html>

  12. #12
    Expert confirmé

    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
    Par défaut
    Comme je te l'ai dit précédemment, la classe ForwardAction n'est plus utilisée dans les versions récentes de Struts.
    Il faut donc que tu supprimes toutes les références à cette classe du 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
    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.3//EN"
    "http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
     
    <struts-config>
     
    <form-beans>
       <form-bean name="frmPersonne" type="istia.st.struts.personne.FormulaireBean" />
    </form-beans>
     
    <action-mappings>
     
    <action path="/main" type="istia.st.struts.personne.FormulaireAction"
            name="frmPersonne" scope="session" validate="true" input="erreurs.do">
       <forward name="reponse" path="/vues/reponse.personne.jsp"/>
    </action>
     
    <action path="/erreurs" forward="/vues/erreur.personne.jsp"/>
     
    <action path="/reponse" forward="/vues/reponse.personne.jsp"/>
     
    <action path="/formulaire" forward="/vues/formulaire.personne.jsp"/>
     
    </action-mappings>
     
    <message-resources parameter="ressources.personneressources"/>
     
    </struts-config>

  13. #13
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    et dans ce cas je doit la remplacer par quoi, sachant que ca marchait pour les autres vues(erreurs et reponse...)

  14. #14
    Expert confirmé

    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
    Par défaut
    Regarde le struts-config.xml que j'ai posté.
    J'y ai rajouté les vues erreurs, reponse et formulaire.

  15. #15
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    mais pourtant je continue d'avoir le même pb, pas de verification des données!!!!!!!!!

  16. #16
    Expert confirmé

    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
    Par défaut
    As-tu bien créé le fichier personneressources.properties dans un répertoire ressources ?

    Y as-tu bien défini les clés personne.formulaire.nom.vide, personne.formulaire.age.vide et personne.formulaire.age.incorrect ?

    As-tu un message d'erreur dans la console Eclipse ?

    Et peux-tu donner le code de l'Action FormulaireAction ?

  17. #17
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    oui j'ai créé un fichier des erreurs sous l'extention .properties que j'ai placé dans web-inf/classes/ressources et j'ai declaré dans struts-config.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <message-resources parameter="ressources.personneressources" />
    et voila le code avec lequel je teste l'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
    package istia.st.struts.personne;
     
    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;
     
    public class FormulaireAction extends Action {
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws IOException,ServletException {
    //			 on a un formulaire valide, sinon on ne serait pas arrivé là
    	    	System.out.println("bonjour");
    			FormulaireBean formulaire=(FormulaireBean)form;
    			request.setAttribute("nom",formulaire.getNom());
    			request.setAttribute("age",formulaire.getAge());
    			return mapping.findForward("reponse");
    			}//execute
    }
    et ici je donne le contenu du message afficher dans la console:
    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
    11 juil. 2008 10:02:14 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.5.0_12\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\QuickTime\QTSystem\
    11 juil. 2008 10:02:14 org.apache.coyote.http11.Http11BaseProtocol init
    INFO: Initialisation de Coyote HTTP/1.1 sur http-8080
    11 juil. 2008 10:02:14 org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 1437 ms
    11 juil. 2008 10:02:14 org.apache.catalina.core.StandardService start
    INFO: Démarrage du service Catalina
    11 juil. 2008 10:02:14 org.apache.catalina.core.StandardEngine start
    INFO: Starting Servlet Engine: Apache Tomcat/5.5.23
    11 juil. 2008 10:02:14 org.apache.catalina.core.StandardHost start
    INFO: XML validation disabled
    11 juil. 2008 10:02:15 org.apache.coyote.http11.Http11BaseProtocol start
    INFO: Démarrage de Coyote HTTP/1.1 sur http-8080
    11 juil. 2008 10:02:15 org.apache.jk.common.ChannelSocket init
    INFO: JK: ajp13 listening on /0.0.0.0:8009
    11 juil. 2008 10:02:15 org.apache.jk.server.JkMain start
    INFO: Jk running ID=0 time=0/47  config=null
    11 juil. 2008 10:02:15 org.apache.catalina.storeconfig.StoreLoader load
    INFO: Find registry server-registry.xml at classpath resource
    11 juil. 2008 10:02:15 org.apache.catalina.startup.Catalina start
    INFO: Server startup in 1250 ms
    11 juil. 2008 10:02:19 org.apache.struts.action.ActionServlet initChain
    INFO: Loading chain catalog from jar:file:/E:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/webapps/strutspersonne/WEB-INF/lib/struts-core-1.3.8.jar!/org/apache/struts/chain/chain-config.xml
    11 juil. 2008 10:02:19 org.apache.struts.action.ActionServlet initChain
    INFO: Loading chain catalog from jar:file:/E:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/webapps/strutspersonne/WEB-INF/lib/struts-core-1.3.9.jar!/org/apache/struts/chain/chain-config.xml
    11 juil. 2008 10:02:19 org.apache.struts.chain.ComposableRequestProcessor init
    INFO: Initializing composable request processor for module prefix ''
    11 juil. 2008 10:02:21 org.apache.struts.chain.commands.servlet.CreateAction createAction
    INFO: Initialize action of type: istia.st.struts.personne.FormulaireAction
    bonjour
    avec la page reponse qui s'affiche sur le navigateur

  18. #18
    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
    Je me trompe peut être mais ne manque t il pas <html:errors> dans ta jsp pour afficher les messages d'erreurs ?!?

  19. #19
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    non ca existe aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <html>
    <head>
    <title>Personne</title>
    </head>
    <body>
    <h2>Les erreurs suivantes se sont produites</h2>
    <html:errors/>
    <html:link page="/formulaire.do">
    Retour au formulaire
    </html:link>
    </body>
    </html>

  20. #20
    Expert confirmé

    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
    Par défaut
    Peux-tu faire clic droit sur ton projet, puis Properties -> Java Build Path -> onglet Source et me dire ce qu'il y a dans Default output folder ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème avec enctype="multipart/form-data"
    Par MeDioN dans le forum Langage
    Réponses: 4
    Dernier message: 07/07/2009, 17h09
  2. [Spip] Problème avec index.html
    Par Holin dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 21/08/2007, 14h37
  3. problème avec tableaux html
    Par pas30 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 20/05/2007, 17h36
  4. Problème avec javascript:document.forms
    Par enclave_51 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/06/2006, 09h06
  5. Excel 2000 FR et problème avec le HTML 4.01
    Par MC2 dans le forum Excel
    Réponses: 5
    Dernier message: 30/04/2006, 10h48

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