Et si tu nous montrais tout simplement le code qui te permet d'afficher ces éléments sélectionnés ? et celui qui te permet de les récupérer ?Citation:
Envoyé par gamel
Version imprimable
Et si tu nous montrais tout simplement le code qui te permet d'afficher ces éléments sélectionnés ? et celui qui te permet de les récupérer ?Citation:
Envoyé par gamel
Alors voila
struts-config.xml
dans mon formulaire je recupere comme suit:Code:
1
2
3
4
5
6
7
8
9
10 <form-beans> <form-bean name="frmPays" type="org.gamel.FormulairePaysBean" /> <action input="/erreurs.do?url=/formulaire_pays.do" name="frmPays" path="/register_pays" scope="session" type="org.gamel.FormulairePaysAction" validate="true"> <forward name="success_pays" path="/reponse_pays.do" /> </action>
ma jsp reponse :Code:
1
2
3
4 <td> <html:select name="frmPays" property="paysAssocies" size="3" multiple="true"> <html:optionsCollection name="frmPays" property="listePays" label="_name" value="_id"/> </html:select>
Mon FormulairePaysAction récupère les valeurs et les insere dans ma bd ... mais je n'arrive pas à récupérer la valeur des Pays associés ....Code:
1
2
3
4
5
6
7 <tr> <td>Liste des Pays associés</td> <td> <bean:write name="frmPays" property="paysAssocies"/> </td> </tr>
edit : paysAssocies est un String[] de mon Bean FormulairePaysBean
et comme ça ?
Code:
1
2 <bean:write name="frmPays" property="paysAssocies._nom "/>
Ben voilà d'où vient le problème.
Pour afficher ton tableau de String, il faut faire une boucle pour afficher chaque élément du tableau.;)
PS : Tu peux par exemple utiliser le tag logic:iterate.
Citation:
Envoyé par stela86
Je pars sur l'idée du logic iterate ... je cherche je cherche ....Citation:
No getter method for property: "paysAssocies._nom" of bean: "frmPays"
Cela devrai fonctionné si ton tableau paysAssocies contient des ojets ayant _nom comme attribut avec un getter !Code:
1
2
3
4 <nested:iterate name="frmPays" property="paysAssocies"> <bean:write name="frmPays" property="_nom " > </nested:iterate>
Ca progresse ...
Dans ma jsp reponse :
Le soucis, c'est que si j'ai selectionné deux pays dans ma liste, il va m'afficher deux fois le nom du pays que je viens de créer ... et pas les pays selectionnés ...Code:
1
2
3
4
5
6 <td> <logic:iterate id="pays" name="frmVSC" property="paysAssocies"> <bean:write name="frmPays" property="_name"/> </logic:iterate> </td>
J'ai essayé et meme résultat ....Citation:
Envoyé par stela86
J'ai pas vraiment tout suivi tu peux etre un peu plus clair stp ?
Mais juste une chose, paysAssociés est un tableau de String ... et non pas une liste d'objet pays ....
Je m'explique, mon premier formulaire me sert a créer un pays(nom ....)
Une liste permet de définir les pays qui sont associés a ce nouveau pays
Je valide mon formulaire et lors de l'affichage des pays associés j'ai en sortie le nom du pays que je viens de créer autant de fois que j'ai sélectionné de pays dans la liste des pays associés ...
Plus clair ??
Ce que tu veux afficher c'est seulement les pays associés a celui que tu viens de créer ?
J'affiche un récapitulatif concernant le nouveau pays, et les pays associés.
Donc si j'ai suivi c'est ton String[] qui contient plusieurs fois le pays que tu viens de créer ?
Je comprends plus rien ...
logiquement mon String contient que les id des pays selectionnés.
J'avoue que quelque chose m'échappe totalement!!
donc c'est normal qu'il m'affiche deux fois le nom du nouveau pays, puisque c'est la qui va lire les valeurs ....Code:
1
2
3
4
5
6 <td>Liste des Paysassociés</td> <td> <logic:iterate id="pays" name="frmPays" property="paysAssocies"> <bean:write name="frmPays" property="_name"/> </logic:iterate> </td>
alors que dans mon String[] pays Associés j'ai bien les id des pays selectionnés ...
Et tu as seulement les id des pays selectionné dans ton tableau
Essaye de faire ça
Ou id est l'objet de ton string[] !Code:
1
2
3 <logic:iterate id="pays" name="frmPays" property="paysAssocies"> <bean:write name="frmPays" property="id"/> </logic:iterate>
En fait ton tableau est rempli par tes id des pays il devrai etre remplis par des pays qui te rendrai la tache plus simple
Tu pourrai ainsi afficher ce que tu veux car ce que tu as fai dans ton logic c'est d'affiche _name qui correspond au pays que tu viens de créer
OUi j'ai seulement les id, donc si je fait dans mon execute (de FormulairePaysAction)
j'obtiens :Code:
1
2
3
4 FormulairePaysBean formulaire=(FormulairePaysBean)form; String[] plusieurs = formulaire.getPaysAssocies(); for(int i=0;i<plusieurs.length;i++) System.out.println("plusieurs["+i+"]="+plusieurs[i]);
Citation:
plusieurs[0]=1
plusieurs[1]=24
Je suis d'accord mais comment faire les insertion dans bdd sans les id ??Citation:
Envoyé par stela86
paysAssocies étant un tableau de String[] et non un tableau de beans Pays, tu ne dois pas faire ceci :
mais tout simplement ceci :Code:
1
2
3
4 <logic:iterate id="pays" name="frmPays" property="paysAssocies"> <bean:write name="frmPays" property="_name"/> </logic:iterate>
Code:
1
2
3
4 <logic:iterate id="pays" name="frmPays" property="paysAssocies"> <bean:write name="pays"/> </logic:iterate>