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 :

Grosse énigme sur les propriétés indexées


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut Grosse énigme sur les propriétés indexées
    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.

  2. #2
    Expert confirmé

    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
    Par défaut
    Essaie avec un scope="session" dans le mapping de l'Action de path /do_reserve_performance.

    Sinon, pour info, tu peux utiliser les tags nested.
    Avec ces tags, il n'est pas utile de coder getter et setter indexés dans l'ActionForm.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <nested:iterate name="reserve_perf_form" property="reservations">
       <div>
         <label>Catégorie <nested:write property="category"/> : </label>
         <nested:text property="number" size="6"/> places
         <nested:hidden property="category"/>
       </div>
    </nested:iterate>

  3. #3
    Expert confirmé

    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
    Par défaut
    Une remarque par rapport au code de ton Action :

    pour récupérer tout le contenu de ton ArrayList, il faudrait plutôt coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<Reservation> reserv = (ArrayList<Reservation>) form_r.getReservations;

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut
    Merci pour les réponses, je n'ai pas encore testé, mais je viens de me rappeller que l'appel à l'action se faisait par un appel javascript via la librairie prototype et il semblerait que mon problème vienne de là : les paramètres ne sont pas passées en paramètre.
    Je vais essayer d'éclaircir ça puis je passerai en nested tag, ça m'a l'air bien utile.

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

Discussions similaires

  1. boucler sur les propriétés d'une entitie
    Par karami dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/11/2008, 12h53
  2. Question sur les listes indexées
    Par devplus dans le forum Hibernate
    Réponses: 0
    Dernier message: 25/10/2008, 16h55
  3. Réponses: 9
    Dernier message: 19/06/2008, 12h19
  4. Petite interrogation sur les z-index et div
    Par Delphy113 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/02/2006, 21h09

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