Hashmap错误:javax.el.PropertyNotFoundException

时间:2011-03-16 13:01:43

标签: java jsp servlets hashmap propertynotfoundexception

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

3 个答案:

答案 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是一个整数变量。