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 で を反復するときは、そのEntrys を反復しているため、valueプロパティを使用してそれらの値にアクセスする必要があります。

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

キーと値のペアのタイプを認識できるように、HashMap をそのように宣言する必要があります。常にこの方法でハッシュマップをインスタンス化する必要があります。そうしなくてもできるかどうかはわかりません。Actionscriptのようなものでは、どのタイプが必要かではなく、ディクショナリを定義するだけで済むことを知っていますが、Javaでは、使用されているタイプを定義する必要があり、プリミティブタイプを使用することはできません(私は信じています) int、double など

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

productId は int だけでなく Integer でなければなりません

于 2011-03-16T13:04:05.740 に答える
1

これは、JSP などを使用して読み取ろうとしている方法が原因です。

$cartList[productId]行われるべきです。ここでproductIdは整数変数であることに注意してください。

于 2011-03-16T13:04:21.233 に答える