使用JSTL在JSP下拉列表中显示部门代码和描述

时间:2013-02-10 11:44:26

标签: java jsp jstl

我有一个DAO类,它有一个返回java.util.List的方法 我从数据库返回Employee DepartmentEmployee Department Code的位置。

public List<Employee> getEmployeeDetails() {
    List<Employee> emp = new ArrayList<Employee>();

    while (resultSet.next()) {
        emp.add(mapListEmployees(resultSet));
    }
    return emp ;
}

在我的ManagedBean中,我想调用getEmployeeDetails()方法并将其填充到名为getEmpDetails的方法

public List<Employee> getItems() {
    for (Employee employee: myDAO.getEmployeeDetails()) {
        list.add(employeeLabel.getEmployeeName(),
                employeeLabel.getEmployeeDepartment());
    }
}

但问题是list.add不允许有两个String参数,因为我得到了

method add(java.lang.String, java.lang.String) not found in 
interface java.util.List

那么如何从dao获取值并加载到ManagedBean中返回List的方法 最后我如何使用jstl作为下拉组件在JSP页面中调用它们? 像

这样的东西
<select id="emp">
    <c:forEach >
        <option value="${item}">${item}</option>
    </c:forEach>
</select>

此致

2 个答案:

答案 0 :(得分:2)

我假设EmployeeGroup是唯一的。因此,您可以使用Map而不是list来获取键值结构。你可以找到使用jstl

在jsp中打印Map的代码
public List<Employee> getItems() {
   Map<String, String> mapObj = new HashMap<String, String>();
            for (Employee employee: 
                 myDAO.getEmployeeDetails()) {
                map.put(employeeLabel.getEmployeeGroup(),
                         employeeLabel.getEmployeeGroupDescription());
            }
 }

JSP:
//Don't forget to add the mapObj to the request context
<select id="emp">
        <c:forEach var="item" items="${mapObj}">
            <option value="${item.key}">${item.value}</option>
        </c:forEach>
    </select>

答案 1 :(得分:1)

我会跳过所有类型的映射。您可以通过在bean中为employeeDetails提供public getter来存储List并直接从JSP使用它。

<select id="emp">
<c:forEach items="${beanName.employeeDetails}" var="res">
    <option value="${res.employeeGroup}">${res.employeeGroupDescription}</option>
</c:forEach>

请确保,您的sql通过在sql或UNIQUE索引中使用DISTINCT返回唯一对。

Java代码:

    private List<Employee> employeeDetails = new ArrayList<Employee>();
    public List<Employee> getEmployeeDetails() {
    List<Employee> emp = new ArrayList<Employee>();

    while (resultSet.next()) {
        emp.add(mapListEmployees(resultSet));
    }
    this.employeeDetails = emp;


    return this.employeeDetails;
}