Bonjour tout le monde, voila mon pb:
J'utilise struts pour réaliser une appli web, je suis débutant dans le domaine. Je dois réaliser un formulaire dynamique. Pour cela, j'utilise la classe DynaActionForm. J'ai vu dans un article, que l'on pouvait associer n'importe quel type de champ à ce formulaire, ce qui m'arrangerait énormément. Je souhaite donc définir un champ de type SocieteBean. Voici donc le fichier xml:
L'action mapping servant à instancier mon formulaire est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <form-bean name="setupsteForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="societe" type="com.ades.bean.SocieteBean" /> <form-property name="test" type="java.lang.String" /> </form-bean>
L'instanciation du form se passe bien. Voici l'action mapping de soumission du formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <action attribute="gestionsteForm" input="/vues/gestionste.jsp" name="gestionsteForm" parameter="submit" path="/gestionste" type="com.ades.struts.action.GestionsteAction" scope="session" validate="false" />
Voici le code de ma page jsp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <action input="/vues/setupste.jsp" name="setupsteForm" path="/setupste" type="com.ades.struts.action.SetupsteAction" scope="session" validate="false" />
A noter que j'obtien bien la valeur désirée dans le champ societe.
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 <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt"%> <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%> <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%> <html> <head> <meta name = "Generator" content = "Easy Struts Xslt generator for Eclipse (http://easystruts.sf.net)."> <title>Struts Form for setupsteForm</title> </head> <body> <bean:define id="societe" name="societe" type="com.ades.bean.SocieteBean" toScope="session"/> <html:form action="/setupste"> <html:text name="societe" property="nom_societe"/><html:errors property="societe"/></br> <html:text property="test" /><html:errors property="test"/></br> <html:submit/><html:cancel/> </html:form> <body> </html>
Là où une erreur se produit, c'est lors de la soumission du formulaire.
Voici le code de la méthode appelée lors de la soumission:
Malheureusement, la chaine de caractère "liste" est vide, alors qu'elle devrait contenir le champ texte societe. Ce qui est plus fou, c'est que la chaine essai représentative du champ de texte "test" n'est pas vide et contient la bonne valeur saisie. Ce qui voudrait dire qu'il n'est pas possible d'associer au formulaire des paramètres de types quelconque?
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 public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DynaActionForm setupsteForm = (DynaActionForm) form; SocieteBean societe = (SocieteBean) setupsteForm.get("societe"); String liste = societe.getNom_societe(); String essai = (String) setupsteForm.get("test"); request.setAttribute("listeessai",liste); request.setAttribute("essai",essai); return mapping.findForward("test"); }![]()
Ou bien (et je pense plus à cela) que j'ai du oublier qqchose. Voila, j'espère avoir été compréhensible.
Merci. :o [/quote]
Partager