EDITED: J'ai essayé de poser cette question dans une autre question, car je sentais que la question initialement posée était suffisamment répondue. J'ai été réprimandé pour cela. J'ai donc modifié cette question en conséquence. Fondamentalement, je ne connais pas la bonne syntaxe pour accéder aux propriétés de la liste des employés qui sont dans la "valeur" de chaque entrée de la carte.Comment afficher les éléments de la valeur d'une carte (liste d'objets) dans un optgroup Struts 2?
J'ai une TreeMap stockée dans une variable de session. La "clé" de TreeMap contient une chaîne. La "valeur" de la détient une liste d'objets. TreeMap est rempli dans la classe Action. Un échantillon TreeMap pourrait ressembler à ceci:
ArrayList<Employee> employeeList1 = new ArrayList<Employee>();
Employee myEmployee = new Employee();
myEmployee.setEmployeeId("123");
myEmployee.setEmployeeName("John Doe");
employeeList1.add(myEmployee);
myEmployee = new Employee();
myEmployee.setEmployeeId("456");
myEmployee.setEmployeeName("Jane Doe");
employeeList1.add(myEmployee);
...
TreeMap<String,Employee> availableSupervisorsMap = new TreeMap<String,Employee>();
availableSupervisorsMap.put("A", employeeList1);
availableSupervisorsMap.put("B", employeeList2);
availableSupervisorsMap.put("C", employeeList3);
session.setAttribute("availableSupervisorsMap", availableSupervisorsMap);
Dans la JSP, je veux montrer une boîte de sélection avec chaque « clé » comme une étiquette optgroup, et chaque employeeId et employeeName dans la liste de « valeur » de Les objets employés sont la valeur et l'affichage de l'option, respectivement. J'ai essayé le code ci-dessous, en vain:
<s:select name="availableIds" list="%{#session.availableSupervisorsMap}" multiple="true">
<s:optgroup label="%{key}">
<s:iterator value="%{value}">
<option value="<s:property value="employeeId"/>">
<s:property value="employeeName"/>
</option>
</s:iterator>
</s:optgroup>
</s:select>
Ainsi, la boîte de sélection devrait ressembler à quelque chose comme ça, moins les points de balle bien sûr:
- A
- John Doe
- Jane Doe
- John Doe
- B
- 1er employeeName de employeeList2
- 2 employeeName de employeeList2
- employeeName Xème employeeList2
- 1er employeeName de employeeList2
- C
- 1er employeeName de employeeList3
- 2 employeeName de employeeList3
- de employeeName Xème employeeList3
- 1er employeeName de employeeList3
lorsque je tente le code JSP ci-dessus, le code HTML suivant est généré:
<select name="availableIds" id="AssignmentSupervisors_availableIds" multiple="multiple">
<option value="A">[Employee:
=========================================================
employeeName = John Doe
employeeId = 123
=========================================================
, Employee:
=========================================================
employeeName = Jane Doe
employeeId = 456
]</option>
<optgroup
>
J'ai vérifié que la carte est remplie exactement comme je le souhaite. Donc, il se rend à la JSP avec les bonnes données.
Je ne sais pas ce que les autres ne, je ne l'ai pas downvoted votre autre question, vient de commenter, et le sens était : si vous avez utilisé une mauvaise syntaxe ici et que vous avez la bonne syntaxe, lorsque vous posez une deuxième question, utilisez la bonne syntaxe de cette réponse, et non la mauvaise syntaxe de cette question. –
@AndreaLigios Je voulais terminer mes tests en premier ... et je l'ai fait. Merci beaucoup! :) – CoachJon