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 :

Récupérer les valeurs du formulaire dans execute()


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut Récupérer les valeurs du formulaire dans execute()
    Salut tout le monde,

    après avoir règlé mon problème grâce a c_nvy je me suis bloqué dans la méthode execute() de l'action.

    en effet, j'ai créé un formulaire, le beans encapsulant les valeurs du formulaire est déclaré dans le fichier struts-config.xml

    et même sa validation se fait grâce au framework validator de struts.

    mon problème c 'est que je veux insérer dans la BD mais j'arrive pas a récupérer les valeurs du beans que le contrôleur de struts se charge de l'instancier
    donc la methode execute de l'action doit recuperer les valeurs soumises par le formulaire et de les inserer dans la BD
    je sais pas comment recuperer ces valeurs sachant qu'aucune classe Form n'existe. (le tout dans struts-config)

    alors pouvez vous m'aider SVP ?

  2. #2
    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
    Il faut "caster" ton formulaire dans le type approprié.
    La signature de la méthode execute contient un paramètre de type ActionForm, il suffit de le caster dans ton type, un truc comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
    {
       MonTypeReelForm _form = (MonTypeReelForm)form;
     
       ... ici, via _form, tu as accès à tes champs
     
       return ...
    }

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Il faut "caster" ton formulaire dans le type approprié.
    La signature de la méthode execute contient un paramètre de type ActionForm, il suffit de le caster dans ton type, un truc comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
    {
       MonTypeReelForm _form = (MonTypeReelForm)form;
     
       ... ici, via _form, tu as accès à tes champs
     
       return ...
    }
    merci bien pour la reponse
    oui je sais bien j'ai essayer de le faire avec org.apache.struts.validator.DynaValidatorForm

    puisque la validation des champs du formulaire se fait par le validateur de struts et ca marchais pas

    dans la mothode execute comment ferai je pour recuperer ces valeurs sachant qu'elles sont portées par scope="session"

  4. #4
    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
    Ce n'était pas précisé que tu utilisais un DynaActionForm...
    Dans ce cas, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DynaActionForm _form = (DynaActionForm)form;
    
    String unChamp = (String)_form.get("unChamp")
    ...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Ce n'était pas précisé que tu utilisais un DynaActionForm...
    Dans ce cas, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DynaActionForm _form = (DynaActionForm)form;
    
    String unChamp = (String)_form.get("unChamp")
    ...
    je pense que j'ai deja fais comme ca et ca marchais pas j vais l refaire
    et je posterai le code

    merci

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    ca ne marche pas

    si le beans va etre generer par le controleur stuts, et la validation via le validator de struts aussi, dans la methode execute comment je vais recuperer les valeurs de ce beans pour l'inserer dans ma BD ???

    si ce n'est pas possible :
    est ce que vous pouvez me donner un exemple d'aide pour pouvoir inserer dans une BD des valeurs provenant d'un formulaire ?

  7. #7
    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
    Montre-nous le code pour commencer...

    1) le struts-config
    2) l'action

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Montre-nous le code pour commencer...

    1) le struts-config
    2) l'action
    d'accord

    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
    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
    public class InsertUserAction extends Action
    {
    	public ActionForward execute(ActionMapping mapping, ActionForm form, 
    			HttpServletRequest request, HttpServletResponse response) throws Exception
    	{
    		DynaActionForm infos = (DynaActionForm) form; 
    		String mail =  (String) infos.get("mail");
    		String psw =  (String) infos.get("psw");
    		String sexe = (String) infos.get("sexe");
    		String ville = (String) infos.get("ville");
     
    		ActionErrors erreurs = new ActionErrors();
    		DataSource dataSource;
    		Connection con = null;
    		Statement stmt = null;
     
    	    String insert = "INSERT INTO user(mail,psw,sexe,ville) VALUES("+mail+""+psw+""+sexe+""+ville+")";
     
    		try 
    		{
     
    			dataSource = getDataSource(request);
    			//dataSource = getDataSource(request,"nomDataSource");
    			con  = dataSource.getConnection();
     
    			if (dataSource == null)
    			{ 
    			      erreurs.add( "dbstruts", new ActionMessage("errors.dbStruts") ); 
    			      return mapping.findForward("erreurs"); 
    			}
     
    			stmt = con.createStatement();
    			@SuppressWarnings("unused")
    			int rs=stmt.executeUpdate(insert);
     
    		}
    		catch (SQLException sqle) 
    		{
    		    getServlet().log("Connection.process", sqle);
    		} 
    		finally 
    		{
    			stmt.close();
    			con.close();
    		}
     
     
    			return mapping.findForward("formulaire");
     
    	}
    et voila le fichier 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
     
     
    <struts-config>
     
    	<data-sources> 
    		<data-source type="org.apache.commons.dbcp.BasicDataSource">
    			<set-property property="driverClassName" value="com.mysql.jdbc.Driver" /> 
    			<set-property property="url" value="jdbc:mysql://localhost/dbStruts" /> 
    			<set-property property="username" value="strutsuser" /> 
    			<set-property property="password" value="strutsuser" /> 
    			<set-property property="maxActive" value="10" /> 
    			<set-property property="maxWait" value="1000" /> 
    			<set-property property="defaultAutoCommit" value="false" />
    			<set-property property="defaultReadOnly" value="false" />
    			<set-property property="validationQuery" value="SELECT COUNT(*) FROM user" />
    		</data-source>
    	</data-sources>
     
    	<form-beans> 
        	<form-bean name="form" type="org.apache.struts.validator.DynaValidatorForm">
    			<form-property name="mail"     type="java.lang.String" />
    			<form-property name="psw"      type="java.lang.String" />
    			<form-property name="sexe"     type="java.lang.String" initial="Homme"/>
    			<form-property name="ville"    type="java.lang.String" />
    		</form-bean>
      	</form-beans>
     
    	<action-mappings>	
     
    		<action path="/listes" type="expose.struts.action.ListUserAction"> 
    			<forward name="erreurs" path="/erreurs.lpi" />
    			<forward name="listes" path="/liste.lpi" />
    		</action>
     
    		<action path="/confirmation" name="form" scope="session" validate="true" input="/index.lpi" type="expose.struts.action.InsertUserAction" >
    			<forward name="resultats" path="/resultats.lpi" />
    		</action>
     
    		<action forward="/index.jsp" path="/index" />
    		<action forward="/WEB-INF/Vues/resultats.jsp" path="/resultats" />
    		<action forward="/WEB-INF/Vues/erreurs.jsp" path="/erreurs" />
    		<action forward="/WEB-INF/Vues/liste.jsp" path="/liste" />
     
    	</action-mappings>
     
     
    	<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> 
        	<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> 
      	</plug-in>
     
    	<message-resources parameter="ressources" />
    </struts-config>

  9. #9
    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
    S'agit-il de la même jsp que dans la précédente discussion avec le logic:iterate ?
    Si c'est le cas, cela expliquerait pourquoi tu ne récupères pas les valeurs modifiées puisque tu fais la mise à jour des propriétés des objets d'une liste.

    Peux-tu montrer le code de la jsp ?

  10. #10
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    ce n'est pas la meme page jsp mais c le meme exemple

    en effet je veux juste inserer a la base de donnees puis afficher un message de confirmation si l'insertion est effectuée

    Si vous voulez que je mets tout le code je lmetterai mais je vois pas que cemla est necessaire

  11. #11
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Merci pour votre aide précieuse, j'ai règlé le problème moi même ^^
    en effet c'est une bête faute que tout le monde doit l'éviter et moi en particulier :
    la source du problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String insert = "INSERT INTO user(mail,psw,sexe,ville) VALUES("+mail+""+psw+""+sexe+""+ville+")";
    correction de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String insert = "INSERT INTO user(mail,psw,sexe,ville) VALUES('"+mail+"','"+psw+"','"+sexe+"','"+ville+"')";
    alors c'est NULL non ?

    maintenant il me reste un tout petit probleme et ca sera fini pour struts
    j'espere que j'aurai pas besoin de poster un autre sujet

    Merci encore

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

Discussions similaires

  1. Récupérer les valeurs du formulaire
    Par Snyper dans le forum Struts 2
    Réponses: 11
    Dernier message: 10/01/2011, 12h41
  2. Réponses: 4
    Dernier message: 24/06/2010, 10h49
  3. Récupérer les valeurs de clés dans un GridView
    Par insane_80 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/06/2010, 13h06
  4. [JSTL] Récupérer les valeurs des champs dans un c:forEach
    Par SaladinDev dans le forum Taglibs
    Réponses: 3
    Dernier message: 06/01/2009, 20h56
  5. [PEAR][HTML_QuickForm] Impossible de récupérer les valeurs du formulaire
    Par Mainman dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/05/2007, 12h15

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