Java 如何显示地图的元素';Struts 2 optgroup中的s值(对象列表)?

Java 如何显示地图的元素';Struts 2 optgroup中的s值(对象列表)?,java,jsp,struts2,optgroup,Java,Jsp,Struts2,Optgroup,编辑:我试着在另一个问题中提出这个问题,因为我觉得最初提出的问题已经得到了充分的回答。我因为那样做而受到惩罚。所以我相应地编辑了这个问题。基本上,我不知道访问每个映射条目的“值”中的员工列表属性的正确语法 我在session变量中存储了一个TreeMap。树映射的“键”包含一个字符串。的“值”包含一个对象列表。树映射填充在Action类中。示例树映射可能如下所示: ArrayList<Employee> employeeList1 = new ArrayList<Employ

编辑:我试着在另一个问题中提出这个问题,因为我觉得最初提出的问题已经得到了充分的回答。我因为那样做而受到惩罚。所以我相应地编辑了这个问题。基本上,我不知道访问每个映射条目的“值”中的员工列表属性的正确语法


我在session变量中存储了一个TreeMap。树映射的“键”包含一个字符串。的“值”包含一个对象列表。树映射填充在Action类中。示例树映射可能如下所示:

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);
ArrayList employeeList1=new ArrayList();
Employee myEmployee=新员工();
myEmployee.setEmployeeId(“123”);
myEmployee.setEmployeeName(“John Doe”);
employeeList1.添加(myEmployee);
myEmployee=新员工();
myEmployee.setEmployeeId(“456”);
myEmployee.setEmployeeName(“Jane Doe”);
employeeList1.添加(myEmployee);
...
TreeMap AvailableSupervisorMap=新建TreeMap();
可用SupervisorMap.put(“A”,员工列表1);
可用SupervisorMap.put(“B”,员工列表2);
可用SupervisorMap.put(“C”,员工列表3);
session.setAttribute(“AvailableSuperversMap”,AvailableSuperversMap);
在JSP中,我想显示一个选择框,其中每个“键”作为optgroup标签,每个“值”的employeeId和employeeName分别作为选项值和显示。我尝试了下面的代码,但没有成功:


所以选择框看起来应该是这样的,当然减去要点:

  • A
    • 无名氏
    • 无名氏
  • B
    • 第一名员工员工名单的名称2
    • 第二名员工员工名单的名称2
    • 员工列表的第X个员工名称2
  • C
    • 第一名员工员工名单3的员工姓名
    • 第二名员工员工名单3的员工姓名
    • 员工列表的第X个员工名称3
当我尝试上面的JSP代码时,会生成以下HTML:

<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 
>

[雇员:
=========================================================
employeeName=约翰·多伊
雇员ID=123
=========================================================
,雇员:
=========================================================
employeeName=简·多伊
雇员ID=456
]
我已经验证了地图的填充方式与我预期的完全一致。因此,它使用正确的数据发送到JSP

  • 你把
    %{}
    {}
    搞混了
  • 迭代集合时,当前对象被推送到值堆栈上,因此不再需要提及集合。但是,您可以使用
    var
    关键字获取对当前对象的引用
  • 你误用了迭代器状态
  • 正确的代码比您想象的要简单:

    
    
    我不知道其他用户做了什么,我没有否决你的另一个问题,只是对它进行了评论,意思是:如果你在这里使用了错误的语法,并且从答案中得到了正确的语法,当你问第二个问题时,请使用这个答案中正确的语法,这个问题的语法没有错。@AndreaLigios我想先完成我的测试…我做到了。非常感谢!:)