我在SERVLET中创建了一个hashmap,如下所示:
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>
答案 0 :(得分:3)
在JSTL中迭代Map
时,您正在迭代其Entry
,因此您需要使用value
属性来访问它们的值:
<c:forEach var = "e" items = "${cartList}">
${e.value.productId}
</c:forEach>
答案 1 :(得分:1)
您需要声明您的HashMap,以便它知道键/值对的类型。你应该总是以这种方式实例化Hashmaps,而且我不确定它是否会让你们不这样做。我知道在诸如Actionscript之类的东西中,你可以放弃定义一个字典,而不是它需要的类型,但是在Java中你必须定义正在使用的类型,你不能使用原始类型(我相信)这样的如int,double等
HashMap<Integer, Cart> cartList = new HashMap<Integer, Cart>();
并且productId必须是Integer而不仅仅是int
答案 2 :(得分:1)
这是由于您尝试使用JSP或其他方式读取它的方式。
$cartList[productId]
应该完成。请注意,productId
是一个整数变量。