0

Employee Department我有一个 DAO 类,它有一个返回 java.util.List 的方法,我Employee 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不允许有两个字符串参数,因为我得到

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>

问候

4

2 回答 2

2

我假设 EmployeeGroup 是独一无二的。因此,您可以使用 Map 而不是 list 来获取键值结构。在此基础上,您可以找到使用 jstl 在 jsp 中打印地图的代码

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>
于 2013-02-10T11:55:16.950 回答
1

我会跳过各种映射。您可以通过在 bean 中为 employeeDetails 提供公共 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;
}
于 2013-02-10T13:51:19.880 回答