2014-02-10 106 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

相关问题