我有一个名为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

10-07 19:42
查看更多