我有一个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
不允许有两个字符串参数,因为我正在获取
method add(java.lang.String, java.lang.String) not found in
interface java.util.List
那么,如何从dao获取值并加载到返回List的ManagedBean中的方法,最后,如何使用jstl作为下拉组件在JSP中调用这些值呢?就像这样
<select id="emp">
<c:forEach >
<option value="${item}">${item}</option>
</c:forEach>
</select>
问候
发布于 2013-02-10 19:55:17
我假设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>
发布于 2013-02-10 21:51:20
我会跳过所有类型的映射。通过在bean中提供employeeDetails的公共getter,您可以存储列表并直接从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;
}
https://stackoverflow.com/questions/14797386
复制相似问题