我有一个DAO类,它有一个返回java.util.List的方法
我从数据库返回Employee Department
和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
不允许有两个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>
此致
答案 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;
}