[Struts][DynaActionForm et persistance des objets]
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:
Code:
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'action mapping servant à instancier mon formulaire est
Code:
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"
/> |
L'instanciation du form se passe bien. Voici l'action mapping de soumission du formulaire:
Code:
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"
/> |
Voici le code de ma page jsp:
Code:
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> |
A noter que j'obtien bien la valeur désirée dans le champ societe.
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:
Code:
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");
} |
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? :?
Ou bien (et je pense plus à cela) que j'ai du oublier qqchose. Voila, j'espère avoir été compréhensible.
Merci. :o [/quote]