2014-02-10 75 views
1

我真的只是一個可視化網頁設計師,我通過從網上獲取一些資源來設法實現一些功能性編碼。我真正需要做的就是通過jsp從數組中顯示html中的培訓計劃列表。我一直在尋找和嘗試一些「方法」,我發現下面的代碼,因爲我相信最簡單的方法。類型列表<String>中的方法add(String)不適用於參數(Map)

<%@ page import="java.util.ArrayList" %> 
<%@ page import="java.util.List" %> 
<%@ page import="java.util.Map" %> 
<%@ page import="java.util.HashMap" %> 
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

List<String> list = new ArrayList<String>(); 
Map course1 = new HashMap(); 
course1.put("code", "ME101"); 
course1.put("desc", "Marine Engineering 101"); 
course1.put("sched", "June 1 - August 30, 2014"); 
course1.put("rsvd", "56"); 
list.add(course1); 

Map course2 = new HashMap(); 
course2.put("code", "ME102"); 
course2.put("desc", "Marine Engineering 102"); 
course2.put("sched", "September 1 - November 31, 2014"); 
course2.put("rsvd", "25"); 
list.add(course2); 

Map course3 = new HashMap(); 
course3.put("code", "CSM101"); 
course3.put("desc", "Certificate on Seamanship 101"); 
course3.put("sched", "June 1 - June 30, 2014"); 
course3.put("rsvd", "36"); 
list.add(course3); 

pageContext.setAttribute("courses", list); 

在HTML的一部分,我有這些顯示值:

<c:forEach items="${courses}" var="current"> 
<tr> 
    <td><c:out value="${current.code}" /><td> 
    <td><c:out value="${current.desc}" /><td> 
    <td><c:out value="${current.sched}" /><td> 
    <td><c:out value="${current.rsvd}" /><td> 
</tr> 
</c:forEach> 

的問題是這些產生錯誤

「的方法,添加(字符串)中的類型名單不適用於 的論點(地圖)「

任何人都可以幫助我如何使這項工作,請嗎?

回答

1

您已定義列表作爲字符串列表:

List<String> list = new ArrayList<String>(); 

但你嘗試地圖的實例添加到這個列表:

Map course1 = new HashMap(); 
... 
list.add(course1); 

字符串列表只能接受字符串,而不是地圖。如果你想映射列表,它應該被定義爲

List<Map> list = new ArrayList<Map>(); 

請注意,您的地圖本身應該是強類型:

List<Map<String, String>> list = new ArrayList<Map<String, String>>(); 
... 
Map<String, String> course1 = new HashMap<String, String>(); 
course1.put("code", "ME101"); 
+0

哇,在類型變化不大做到了。非常感謝!我想我需要讀一下關於差異的內容。 – JNewbie

相關問題