2013-02-10 47 views
0

我有一個DAO類,它有一個返回java.util.List 的方法,我從數據庫返回Employee DepartmentEmployee Department Code使用JSTL在JSP中下拉顯示部門代碼和描述

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一個方法,它返回列表 ,最後如何在JSP頁面中使用jstl作爲下拉組件調用它們? 喜歡的東西

<select id="emp"> 
    <c:forEach > 
     <option value="${item}">${item}</option> 
    </c:forEach> 
</select> 

問候

回答

2

我假設的EmployeeGroup是獨一無二的。因此,您可以使用Map而不是列表來獲取關鍵值結構。根據你可以找到的代碼打印地圖在jsp使用jstl

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> 
+0

Raunak阿加瓦爾因此,它是更好地使用地圖,而不是名單?使用Map的任何優勢?謝謝 – user75ponic 2013-02-10 12:02:41

+0

它更多關於您的要求。既然你想要在jsp上呈現一對值。它會更乾淨。我強烈建議你通過java文檔來更詳細地瞭解它。因爲它是java語言中最重要的數據結構之一。 – 2013-02-10 12:05:04

+0

此外,我需要將mapObj作爲請求上下文添加到哪裏? – user75ponic 2013-02-10 12:06:15

1

我會跳過所有類型的映射。您可以存儲List,並通過爲bean中的employeeDetails提供公共getter來直接使用它。

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

可以肯定,你的SQL利用在SQL或唯一索引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; 
} 
相關問題