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 :

logic:iterate : liste d'objets en form bean


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut logic:iterate : liste d'objets en form bean
    Bonjour,
    j'ai un problème au niveau de récupération de l 'id d'un objet coché dans le checkbox en utlisant la balise <logic:iterate> de struts,j'explique:
    j'ai trois classes : Catégorie et Produit et ChoixClient.
    la classe Catégorie contient une liste des objets Produit
    la classe ChoixClient contient un objet Categorie et une liste des objets Produit
    mon but c'est d' afficher pour une categorie particuliére l'ensemble de ses Produits sous forme de checkbox que le l'utilisateur va cocher pour designer la liste des objets Produit dans la classe ChoixClient.
    j'ai un formBean et deux actions struts: un pour l'affichage de la catégorie et ses produits liés dans des checkbox et un autre pour l'enregistrement du choix dans la table ChoixClient.
    mon but c'est d'arriver à afficher l'ensemble des produits d'une telle categorie dans une liste de checkbox ,et chaque checkbox affiché doit présenter un objet Produit: id_produit et libelle_produit s'affiche ,pour que lorsque on coche une telle valeur et on click sur enregistrer on recupére l'objet Produit séléctionné pour l'ajouter dans la liste des produits de la classe ChoixClient.
    mon Form Bean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class FromB extends ActionForm {
    	private static final long serialVersionUID = 1L;
     
            List<Produit> prod;
            List<Produit> choix;
    //les getters et setters
    public void initComponents( List<Produit> prod,List<Produit> choix){
     
    setProd(prod);
    setChoix(choix);
    }
    	}
    mon action d'affichage: AffichAction:
    // j'ai pas utilisé l'accé à la base de donné car j'ai voulu seulement tester:
    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
    public class AffichAction extends Action {
    	public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest requ, HttpServletResponse response)
                throws Exception
        {
    FromB LeForm =(FromB)form;
    List<Produit> c=null;
    Produit p1=new Produit();
    Produit p2=new Produit();
    Produit p3=new Produit();
    p1.setId_produit(11);
    p1.setLibelle_produit(ordinateur);
    p2.setId_produit(12);
    p2.setLibelle_produit(imprimante);
    p3.setId_produit(13);
    p3.setLibelle_produit(clavier);
    List<Produit> prd= new ArrayList<Produit>();
    prd.add(p1);
    prd.add(p2);
    prd.add(p3);
    LeForm.initComponents(prd,c);
    return mapping.findForward("success");
    }
    et pour ma page jsp là ou j'ai le probleme avec la logique iterate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <b> les produits associés : Veuillez choisir</b>
    <logic:notEmpty name="FromB " property="prod">
    	<logic:iterate id="id_produit" indexId="idx" property="prod" name="FromB" >
    		<html:checkbox name="FromB " property="prod"  value="id" >
    			<bean:write name="id_produit" property="libelle_produit" />
    		</html:checkbox>
    	</logic:iterate>
    </logic:notEmpty>
    j'arrive à affcher les checkbox avec les libellés produit associés ,mais lorsque je coche j'ai l'erreur:
    Cannot invoke form.FromB .setProd on bean class 'class form.FromB ' - argument type mismatch - had objects of type "java.lang.String" but expected signature "java.util.List" , sachant que j'ai rien met dans l action

    là franchement je sais pas comment je vais proceder pour que le checkbox affiche le libellé de produit mais designe son id ,pour que lorsuq on coche on recupére l id du produit selectionné?avez vous une solution?? merci

  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
    Il faut utiliser le tag html:multibox à la place du tag html:checkbox et la propriété prod de l'ActionForm doit être de type String[].

    Et il faut l'initialiser comme ceci dans la méthode reset de l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void reset(ActionMapping mapping, HttpServletRequest request)
    {
       this.prod=new String[0];
    }

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

Discussions similaires

  1. Liste d'objets dans un bean
    Par burhud dans le forum Struts 1
    Réponses: 2
    Dernier message: 13/07/2007, 15h28
  2. Tester avec l'objet precédant dans un logic:iterate
    Par kalan dans le forum Struts 1
    Réponses: 3
    Dernier message: 16/11/2006, 15h25
  3. [Struts] logic iterate / bean write
    Par sg-40 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 16/06/2005, 15h35
  4. [Struts] <logic:iterate> sur une collection d objets c
    Par trax020 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/05/2005, 00h11
  5. [jsp][struts] Acces au bean d'un <logic:iterate>
    Par Altherac dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 29/09/2004, 13h02

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