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 :
mon action d'affichage: AffichAction:
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); } }
// j'ai pas utilisé l'accé à la base de donné car j'ai voulu seulement tester:
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
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"); }
j'arrive à affcher les checkbox avec les libellés produit associés ,mais lorsque je coche j'ai l'erreur:
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>
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
Partager