foreach循环不能打开弹出窗口

时间:2010-06-17 13:59:11

标签: java jsp jstl

对于每个循环在打开的弹出窗口中不起作用,而我在页面上写的时可以看到相同的集合

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

2 个答案:

答案 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">

这应该可以解决问题,你试图获得一个可能超出默认范围(页面)的变量。