对于每个循环在打开的弹出窗口中不起作用,而我在页面上写的时可以看到相同的集合
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>my cart</title>
</head>
<body>
<% ArrayList cart=(ArrayList)session.getAttribute("Cart");
out.println(cart);
//this line is working
%>
<table>
<tr bgcolor="#EAEAFF">
<td><b>Product ID</b></td>
</tr>
<c:forEach items="${cart}" var="current">
<tr>
<td><c:out value="${current}"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>
答案 0 :(得分:3)
我发现您发布的代码有两个问题:
1 - cart
的情况是错误的。在以下代码中,您必须Cart
使用大写C:
<c:forEach items="${Cart}" var="current">
此外,此代码
...
<% ArrayList cart=(ArrayList)session.getAttribute("Cart");
out.println(cart);
//this line is working
%>
...
<c:forEach items="${cart}" var="current">
不会选择您使用scriptlet创建的cart
变量(如果这是您的想法)。 cart
是从JSP生成的servlet中的局部变量。标签将无法访问它。)
2 - 您的c:forEach
代码的taglib声明在哪里?类似的东西:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
如果服务器无法识别标签,它会将事物直接输出到响应中。您的浏览器将无法识别<c:forEach>
并将忽略它(即您在源代码中有它,但它不会显示在屏幕上)。
对JSP使用以下代码,它应该可以工作:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>my cart</title>
</head>
<body>
<table>
<tr bgcolor="#EAEAFF">
<td><b>Product ID</b></td>
</tr>
<c:forEach items="${Cart}" var="current">
<tr>
<td><c:out value="${current}" /></td>
</tr>
</c:forEach>
</table>
</body>
</html>
答案 1 :(得分:0)
<c:forEach items="${sessionScope.cart}" var="current">
这应该可以解决问题,你试图获得一个可能超出默认范围(页面)的变量。