Ошибка Hashmap: javax.el.PropertyNotFoundException - PullRequest
0 голосов
/ 16 марта 2011

Я создал хеш-карту в моем 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>

Ответы [ 3 ]

3 голосов
/ 16 марта 2011

При итерации Map в JSTL вы итерируете его Entry s, поэтому вам необходимо использовать свойство value для доступа к их значениям:

<c:forEach var = "e" items = "${cartList}">
    ${e.value.productId}
</c:forEach>
1 голос
/ 16 марта 2011

Это связано с тем, как вы пытаетесь прочитать его с помощью JSP или чего-то еще.

$cartList[productId] должно быть сделано. Обратите внимание, что productId здесь является целочисленной переменной.

1 голос
/ 16 марта 2011

Вам необходимо объявить ваш HashMap как таковой, чтобы он знал, какой тип пары ключ / значение. Вы должны всегда создавать экземпляры Hashmaps таким образом, и я не уверен, позволит ли это вам даже без этого. Я знаю, что в таких вещах, как Actionscript, вы можете избежать определения словаря, а не того, какие типы должны быть в нем, но в Java вы должны определить используемые типы, и вы не можете использовать примитивные типы (я считаю) как int, double и т. д.

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

и productId должен быть целым числом, а не просто int

...