Bonjour, je fais mes premiers pas avec SPRING MVC et je bloque depuis quelques jours sur un problème "bénin". Disons qu'avec Struts je n'ai pas de soucis mais là je sèche.

Pour information, nous utilisons aussi Hibernate. Les frameworks ont été mis en place par des prestataires, je ne connais donc rien à la configuration de ces derniers mais j'ai accès si besoin au fichier.

Mon problème est le suivant :

J'ai un objet LOT qui contient une liste de DOSSIER
Un DOSSIER contient un SONDAGE qui a un ID et un LIBELLE

voici le code de mon referanceData() de mon controller
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
 
protected Map referenceData(HttpServletRequest request, Object command, Errors errors) throws Exception {
	Map<String, Object> lists  = new HashMap<String, Object>();
 
	if (request.getParameter("idLot") != null) {
               final String idLot = request.getParameter("idLot");
 
 
		Lot lot = getLotService().rechercherParId(Long.valueOf(idLot));
 
		//initialisation du formulaire
		LotForm form = (LotForm)command;
		populateForm(form, lot);
 
		        lists.put("lotForm", form);			
			lists.put("list_Sondage", getListeSondageRestreintes());
		}
 
private void populateForm(LotForm form, Lot lot) {			
 if (lot != null ) {
	form.setId(lot.getId());
	form.setNom(lot.getNom());		
	form.setListeDossiers(new ArrayList<Dossier>(lot.getDossierTries()));
 }	
}
Ma JSP donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<c:forEach var="dossier" items="${lotForm.listeDossiers}" varStatus="rowCounter">
<tr>
 <td id="${rowStyle}">
	${dossier.noDossier}&nbsp;
 </td>
 
<td id="${rowStyle}">
  <form:select multiple="false" items="${list_Sondage}" itemValue="id" itemLabel="libelle" path="listeDossiers[${rowCounter.index}].sondageLot.id" />
</td>
</tr>
</c:forEach>
La JSP est bien contruite, les listes déroulantes on bien la bonne valeur en selected.
Lors que je submit mon form j'ai l'erreur suivante :
Invalid property 'listeDossiers[0]' of bean class [fr.omc.web.form.lot.LotForm]: Cannot access indexed value of property referenced in indexed property path 'listeDossiers[0]': returned null org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:557)
org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:451) org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:428)
org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:645) org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:78) org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:532) org.springframework.validation.DataBinder.doBind(DataBinder.java:434) org.springframework.web.bind.WebDataBinder.doBind(WebDataBinder.java:147) org.springframework.web.bind.ServletRequestDataBinder.bind(ServletRequestDataBinder.java:108) org.springframework.web.servlet.mvc.BaseCommandController.bindAndValidate(BaseCommandController.java:391)
...
En debuggant je me suis aperçu qu'a la soumission du form je faisais un new LotForm().
Je me suis donc dis que mon form était perdu dans la session donc j'ai essayé de surcharger la méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
protected Object formBackingObject(HttpServletRequest request)
			throws Exception
avec le même code que mon referenceData afin de reconstruire un form avec ma liste de dossier.
De ce fait j'arrive à aller dans mon onSubmit mais les valeurs des sondages que je trouve dans mon form ne sont pas celle attendu.

Avec vous des idées notamment concernant la gestion du form en session? ou comme avec Spring mvc manipuler des des liste de bean contenu dans un bean ?

Merci