Bonjour à vous!
Voici mon soucis: Je développe une application Web utilisant Struts 2 (jusqu'ici je crois donc être au bon endroit).
J'ai une page (JSP) qui affiche 3 listes d'objet sous forme de tableau. Chaque ligne du tableau correspond à un objet et on en affiche certaines données dans cette ligne.
Devant chacune de mes lignes j'ai une checkbox et en bas de chaque tableau j'ai des boutons déclenchant des actions Struts. Certaines de ces actions nécessite de récupérer la liste des objets sélectionné (ie. la checkbox devant la ligne a été cochée) d'un tableau.
Une solution a été adopté jusqu'ici, mais elle me déplait: Le pojo (celui que l'on affiche) comporte un champ "selected" qui est mappé à l'état de la checkbox. Mais je trouve ca maladroit et je voudrais retirer ce champ du pojo.
J'ai remarqué que Struts 2 pouvait gérer la selection d'objet et renvoyer la liste des objets sélectionnés grâce à checkboxlist ... malheureusement dans mon cas, je ne peux pas utilisé directement la balise <s:checkboxlist ...> à moins de réécrire un fichier .ftl correspondant aux graphisme que l'on veut obtenir en définitif et en plus cela risque d'être très compliqué (on affiche pas tout le temps les même champs en fonction du tableau).
Donc j'ai essayer de reproduire le mécanisme de la checkboxlist en l'écrivant directement sous forme (X)Html. Ca donne un truc comme ça :
et côté java j'ai:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <s:iterator value="list"> (...) <input type="checkbox" name="nodes" value="<s:property />" /> (...) </s:iterator>
Le problème c'est que je me retrouve avec un "Invalid field value for field nodes" au moment du lancement d'une action. Cette manière d'écrire les checkbox stocke la référence de l'objet en tant que valeur (comme le fait le checkboxlist) et je crois que struts tente de faire entrer une string (la référence) dans ma liste au lieu de l'objet y correspondant ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 (...) private List<MyNode> nodes; (...) public List<MyNode> getNodes() { return nodes; } public void setNodes(List<MyNode> nodes) { this.nodes = nodes; } (...)
Quelqu'un peut-il m'aider à trouver une voie pour résoudre ce problème?
Tous les exemple que j'ai vu traite de la selection dans une list de String du coup je comprends que cela fonctionne mais moi c'est mon objet que je veux récupérer.
Partager