Bonjour,

après de nombreuses recherches, de nombreux essais infructueux, je me décide à vous faire part de mon problème qui m'apparait aujourd'hui comme un problème insolvable.
Le problème est simple : lorsque je soumets à mon action un action form contenant une collection de beans, les données saisies ne sont pas envoyées (ou retrouvées ??)...

Le code de ma page jsp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<logic:iterate name="reserve_perf_form" property="reservations" id="reservation" indexId="index">
	<div>
	  <label>Catégorie <bean:write property="category" name="reservation"/> : </label>
	<html:text name="reservation" indexed="true" property="number" size="6" /> places
	<html:hidden property="category" name="reservation" indexed="true" />
	</div>
</logic:iterate>
Le code html de la page générée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<div>
 <label>Catégorie B : </label>
 <input type="text" name="reservation[0].number" size="6" value="0"> places
 <input type="hidden" name="reservation[0].category" value="B">
</div>
<div>
 <label>Catégorie A : </label>
 <input type="text" name="reservation[1].number" size="6" value="0"> places
 <input type="hidden" name="reservation[1].category" value="A">
</div>
L'ActionForm :
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
 
public final class ReservePerformance extends ActionForm {
 
	private static final long serialVersionUID = 1L;
	private List reservations = new ArrayList();
 
	public ReservePerformance(){
		this.reservations.add(0, new Reservation("A",0));
		this.reservations.add(0, new Reservation("B",0));
	}
    // NB :  Cette méthode n'est jamais appelée pourquoi ?
    public void setReservation(int key, Object value) {
    	System.out.println("Set reservation");
        reservations.set(key, value);
    }
    // Methode jamais appellé, pourquoi ?
    public Reservation getReservation(int key) {
    	System.out.println("Get reservation");
        return (Reservation) reservations.get(key);
    }
 
	public List getReservations() {
		System.out.println("Get reservationS");
		return reservations;
	}
 
	public void setReservations(List reservations) {
		System.out.println("Set reservationS");
		this.reservations = reservations;
	}
}
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
 
public class DoReservePerformance extends Action {
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
	throws IOException, ServletException
	{
		ReservePerformance form_r = (ReservePerformance) form;
		System.out.println("form_r : "+form_r);
 
		ArrayList<Reservation> reserv = (ArrayList<Reservation>) form_r.getReservation(0);
		System.out.println(reserv.size());
		int length = reserv.size();
		String valeur = "Reservation effectuée pour";
		for(int i=0;i<length;i++){
			valeur = valeur + "<br/>"+ reserv.get(i).getCategory()+":"+reserv.get(i).getNumber();
		}
            // Les valeurs affichées sont toujours les mêmes que celles initialisées dans l'action form
	    // Write the text to response
	    response.setContentType("text/html");
	    PrintWriter out = response.getWriter();
	    out.println(valeur);
	    out.flush();
		return null;
	}	
}
Et enfin, les lignes intéressantes de mon fichier de config struts-config.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<form-bean name="reserve_perf_form" type="com.alpesbillets.struts.forms.ReservePerformance">
 </form-bean>
 
 <action path="/do_reserve_performance"
            input="/views/reserve_perf.jsp"
            type="com.alpesbillets.struts.actions.DoReservePerformance"
            name="reserve_perf_form" validate="true" scope="request" />
Si qqn pouvait me sortir de ce probleme très très facheux, je lui en serais très reconnaissant.