2010-06-17 8 views
0

ouvert pour chaque boucle ne fonctionne pas dans une fenêtre contextuelle ouverte pendant la même collection je peux voir quand je l'écris à la pageboucle foreach ne fonctionne pas sur pop-up

<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

Vous devriez poster plus de code, la page principale et le code popup serait bien. Et utilisez le balisage SO pour les codes. – wtaniguchi

Répondre

3

Je vois deux problèmes avec le code affiché:

1 - le cas pour cart est erroné. Dans le code suivant, vous devez avoir Cart avec un C majuscule:

<c:forEach items="${Cart}" var="current"> 

De plus, ce code

... 
<% ArrayList cart=(ArrayList)session.getAttribute("Cart"); 
out.println(cart); 
//this line is working 
%> 
... 
<c:forEach items="${cart}" var="current"> 

ne capte pas la variable cart vous avez créé avec le scriptlet (si c'est ce que vous pensez). cart est une variable locale de la servlet générée à partir de votre JSP. Le tag ne pourra pas y accéder). Où est la déclaration taglib pour votre tag c:forEach? Quelque chose comme:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

Si le serveur ne reconnaît pas la balise comme ce qu'il est, il affichera la chose directement dans la réponse. Votre navigateur ne reconnaîtra pas <c:forEach> et l'ignorera (c'est-à-dire que vous l'avez dans le code source mais il ne s'affiche pas à l'écran).

Utilisez le code suivant pour votre JSP et il devrait fonctionner:

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

merci ... il m'a donné beaucoup d'informations sur la boucle foreach. – Pedantic

+0

hey .. merci réponse parfaite .. :-) résolu mon problème .. –

0
<c:forEach items="${sessionScope.cart}" var="current"> 

Cela devrait faire l'affaire, vous essayez d'obtenir une variable qui est probablement hors de la portée par défaut (page).

+2

Non, il l'a sauvegardé avec la clé 'Cart' et essaie d'y accéder avec la clé' cart'. Pour le réparer, il doit l'enregistrer avec la clé 'cart' ou y accéder avec la clé' Cart'. En outre, '$ {}' analyse simplement toutes les étendues de l'attribut, et pas seulement la portée de la page. – BalusC