0

我在我的 SERVLET 中创建了一个哈希图,如下所示:

 int productId = Integer.parseInt(request.getParameter("productId"));

 HashMap cartList = new HashMap();
 Cart item = new Cart(productId, productName, price, quantity);
 cartList.put(productId, item);

但我收到以下错误:

org.apache.jasper.JasperException:javax.el.PropertyNotFoundException:类“java.util.HashMap$Entry”没有属性“productId”。

这是什么意思?我该如何解决我的错误?

编辑:这是我的 JSP

<c:forEach var="cart" items="${cartList}">
         ${cart.productId}
         ${cart.productName}
    <form method="POST" action="ShoppingCartUpdate">
        <input type="submit" value ="Update" class="loginButton" name="Update">
    </form>
    <form method="POST" action=""ShoppingCartRemove">
        <input type="submit" value ="Remove" class="loginButton" name="Delete">
    </form>
</c:forEach>
4

3 回答 3

3

MapJSTL 中迭代时,您正在迭代它Entry的 s,因此您需要使用value属性来访问它们的值:

<c:forEach var = "e" items = "${cartList}">
    ${e.value.productId}
</c:forEach>
于 2011-03-16T13:05:32.543 回答
1

您需要这样声明您的 HashMap,以便它知道键/值对的类型是什么。您应该始终以这种方式实例化 Hashmaps,我不确定它是否会让您即使不这样做。我知道在 Actionscript 之类的东西中,您可以摆脱定义 Dictionary 而不是其中需要包含哪些类型,但在 Java 中,您必须定义正在使用的类型并且您不能使用原始类型(我相信)这样作为int,double等

HashMap<Integer, Cart> cartList = new HashMap<Integer, Cart>(); 

并且 productId 必须是 Integer 而不仅仅是 int

于 2011-03-16T13:04:05.740 回答
1

这是由于您尝试使用 JSP 或其他方式读取它的方式。

$cartList[productId]需要被完成。请注意,productId这里是一个整数变量。

于 2011-03-16T13:04:21.233 回答