Проблема с обновлением hashmap - PullRequest
1 голос
/ 16 марта 2011

Добрый день!

Я делаю корзину для покупок, и я решил временно сохранить ее в хэш-карте (сеанс) перед тем, как заказчик выписывается. Моя проблема в том, что я испытываю трудности при обновлении. предметов внутри текстового поля количества.

Мой код выглядит следующим образом:

JSP:

<c:forEach var="cart" items="${cartList}">
     <form method="POST" action="ShoppingCartUpdate">
            ${cart.value.productId}
            ${cart.value.productName}
            ${cart.value.price}
            <input type="text" value="${cart.value.quantity}"name="quantity">
            <input type="submit" value ="Update" name="Update">
     </form>
 </c:forEach>

Мой сервлет:

 int productId = Integer.parseInt(request.getParameter("productId"));//ERROR HERE.. 
 int quantity = Integer.parseInt(request.getParameter("quantity"));

 Cart item = (Cart)cartList.get(productId);
 item.setQuantity(quantity);
 double price = item.getPrice();
 subtotal = price * quantity;

 cartList.put(productId, item);

Даже если я ввел другое число в поле количества, оно никогда не обновляется. Горячий я могу это исправить. Спасибо.

РЕДАКТИРОВАТЬ: Ошибка выглядит следующим образом:

WARNING: StandardWrapperValve[ShoppingCart]: PWC1406: Servlet.service() for servlet ShoppingCart threw exception
java.lang.NumberFormatException: null

1 Ответ

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

Вы ожидаете productId в качестве параметра запроса, но вы вообще не передаете его в форме. Это прибывает как null, и это не разбирается как целое число и следовательно NumberFormatException: null.

Добавить следующее к той же форме:

<input type="hidden" name="productId" value="${cart.value.productId}" />

Не имеет отношения к конкретной проблеме,

cartList.put(productId, item);

Эта строка не нужна, удалите ее. Это Java, а не PHP или что-то еще. item уже на карте. Вы не удалили его с карты. Все изменения будут отражены в ссылке item на карте, поскольку она ссылается на один и тот же объект.

...