我有一个名为EmployeeRoster的bean:
public class EmployeeRoster {
protected List<Employee> janitors;
protected List<Employee> teachers;
}
在JSP中,我想按类型访问雇员的不同列表。我知道我可以做类似的事情:
${employeeRoster.getJanitors}
但是,我有许多不同类型的雇员,而不是希望在EmployeeRoster中为每种类型创建一个访问器,我希望能够执行以下操作:
${employeeRoster.get(EmployeeType.JANITOR)} // obviously, not valid
在JSP中有可能吗?我可以将参数应用于bean访问器调用吗?
最佳答案
您可以使用Map<String, List<Employee>>
属性。例如。
public class EmployeeRoster {
private Map<String, List<Employee>> types = new HashMap<String, List<Employee>>();
public EmployeeRoster() {
// Fill the map here?
}
// Add/generate getter.
}
然后,您可以按以下方式访问地图值:
${employeeRoster.types.janitor}
基本上与
employeeRoster.getTypes().get("janitor")
相同。您还可以使用大括号符号来使用动态键:${employeeRoster.types[type]}
基本上是
employeeRoster.getTypes().get(type)
。也可以看看:
Hidden features of JSP/Servlet