Salut a tous, je présente une collection dans une jsp à l'aide de struts layout en utilisant le tag <layout:collection>, je voulais savoir comment avoir une colonne avec des case a coché devant chaque ligne de mon tableau?
merci à tous.
Salut a tous, je présente une collection dans une jsp à l'aide de struts layout en utilisant le tag <layout:collection>, je voulais savoir comment avoir une colonne avec des case a coché devant chaque ligne de mon tableau?
merci à tous.
Ben j'ai vu ce code source mais le tag utilisé est <layout:datagrid>, je ne suis pas un expert de struts layout, mais j'ai une liste en scope request que je voudrais afficher dans ma page jsp avec des case a coché pour chaque ligne. Pour traité les collections le tag <layout:collection> est le plus approprié non.
De plus j'ai lu dans la description des tag ici
que l'on pouvait avoir des case avec ce tag.
Est ce possible? si oui comment? ou alors est ce que le seul moyen c'est avec le tag <layout:datagrid>?
As-tu essayé d'insérer un tag layout:checkbox dans le tag layout:collection comme il est indiqué dans la FAQ de Struts-Layout ici ?
Voici mon code qui ne marche pas, je passe ma collection dans une requete aprés l'avoir créer dans une action qui m'affiche la page jsp dans laquelle je voudrais avoir les éléments de la liste et en premiere colonne les case a coché
Ce code ne marche pas si quelqu'un peut m'aider un peu merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <layout:row> <layout:collection name="liste" id="job" styleClass="FORM" indexId="index"> <layout:collectionItem title="job.isSelected"> <layout:checkbox property="job[$(index)].selected"/> </layout:collectionItem> <layout:collectionItem title="job.nom" property="nom" /> <layout:collectionItem title="job.etape" property="etape" /> <layout:collectionItem title="job.machine" property="machine" /> </layout:collection> </layout:row>
j'ai l'erreur suivante Error 500: Cannot find bean under name org.apache.struts.taglib.html.BEAN
J'ai un peu modifié le code sa m'a l'air mieux mais cela ne fonctionne toujours pas:
Error 500: Cannot find bean under name liste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <layout:row> <layout:collection name="liste" id="job" styleClass="FORM" indexId="index"> <layout:collectionItem title="job.isSelected"> <layout:checkbox name="job" property="liste[${index}].selected" /> </layout:collectionItem> <layout:collectionItem title="job.nom" property="nom" /> <layout:collectionItem title="job.etape" property="etape" /> <layout:collectionItem title="job.machine" property="machine" /> </layout:collection> </layout:row>
Aprés quelques modifications j'arrive à cette erreur :
Error 500: No getter method for property job[0].selected of bean job
Mais en faite j'ai juste besoin d'afficher ses cases a cocher comme un moyen de sélection c'est tout, j'ai suivi l'exemple du site, donc cela m'a obligé a rajouté une propriété selected, mais je n'ai pas besoin de cette propriété dans mon objet.
N'y a til pas un moyen d'ajouter juste les case a coché sans qu'elle soit relié a une propriété du bean?? Sa serait plus simple....
En mettant uniquement sa pour le tag <layout:checkbox> :
Sa m'affiche bien l'objet auquel je veux accéder : test.webapp.TestObject@9668lkj....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4............... <layout:checkbox name="job"/> ...............
mais si j'ajoute l'attribut property il ne trouve pas de getter, pourtant y en a un dans ma classe TestObject j'ai un attribut private boolean selected avec méthode get et set.
Ouf! j'ai finalement réussi avec le code ci dessous, je ne sais pas si c'est la meilleur solution pour l'instant, j'avais des problèmes dans l'affichage car cela m'afficher la valeur de mon booléan a coté de la case a coché, il fallait mettre l'attribut layout = false.
Par contre j'aurai une question concernant toujours les cases a cochées mais utilisées dans un tag <layout:form action="/uneAction">. Quand est ce que l'action démarre? ou comment se déclenche l'action? contrairement a un formulaire avec un bouton submit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <layout:row> <layout:collection name="liste" id="job" styleClass="FORM" indexId="index"> <layout:collectionItem title="job.isSelected"> <layout:checkbox name="job" property="selected" layout="false"/> </layout:collectionItem> <layout:collectionItem title="job.nom" property="nom" /> <layout:collectionItem title="job.etape" property="etape" /> <layout:collectionItem title="job.machine" property="machine" /> </layout:collection> </layout:row>
Pour ajouter une checkbox ou un bouton radio il suffit de renseigner deux propriétés, comme suit :
Ca ajoute un bouton radio dont la valeur est le contenu de la propriété id du bean de la liste listRelFille, qui est la liste affichée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <layout:collection name="relBean" property="listRelFille" styleClass="FIELDTAB" styleClass2="FIELDTAB2" selectProperty="id" selectType="radio" selectName="selection" >
C'est ce que j'ai trouvé dans la doc, ça marche bien.
Comment exploiter cette valeur lors de la soumission du formulaire (contenant la liste) ?
Et bien selectName indique que la propriété "selection" de mon formulaire sera remplie avec la valeur du bouton radio.
En fait ça marche pô... j'ai fait comme ça du coup :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <layout:collection name="relBean" property="listRelMere" styleClass="FIELDTAB" styleClass2="FIELDTAB2" id="mere"> <layout:collectionItem title="title.empty"> <html-el:radio name="diaForm" property="selection" value="${mere.id}"/> </layout:collectionItem> ...
Partager