哈希映射错误:javax.el.PropertyNotFoundException

发布于 2024-10-22 03:22:23 字数 951 浏览 1 评论 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>

I created a hashmap in my SERVLET as follows:

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

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

But I have get the following error:

org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: The class 'java.util.HashMap$Entry' does not have the property 'productId'.

What does it mean? How can i resolve my error?

EDIT: HERE is my 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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

云裳 2024-10-29 03:22:24

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

<c:forEach var = "e" items = "${cartList}">
    ${e.value.productId}
</c:forEach>

When iterating the Map in JSTL you are iterating its Entrys, so that you need to use value property to access their values:

<c:forEach var = "e" items = "${cartList}">
    ${e.value.productId}
</c:forEach>
墨落画卷 2024-10-29 03:22:24

您需要这样声明 HashMap,以便它知道键/值对的类型。你应该总是以这种方式实例化哈希图,我不确定即使不这样做它是否会让你这么做。我知道在像 Actionscript 这样的东西中,您可以定义一个字典,而不是其中需要什么类型,但在 Java 中,您必须定义正在使用的类型,并且不能使用原始类型(我相信)这样如 int、double 等

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

,并且 ProductId 必须是 Integer 而不仅仅是 int

You need to declare your HashMap as such so that it knows what the type of the key/value pair are. You should always instantiate Hashmaps in this way, and I'm not sure if it will let you even without doing so. I know that in things like Actionscript you can get away with defining a Dictionary and not what types need to be in it, but in Java you must define the types that are being used and you can't use primitive types (I believe) such as int, double etc

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

and the productId must be Integer and not just int

爱殇璃 2024-10-29 03:22:24

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

$cartList[productId] 应该完成。请注意,productId 在这里是一个整型变量。

It is due to the way you're trying to read it using a JSP or something.

$cartList[productId] should be done. Note that productId is an integer variable here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文