更新hashmap的问题

时间:2011-03-16 15:01:17

标签: jsp servlets jstl hashmap

美好的一天!

我正在制作一个购物车,我决定在客户结账前暂时将其存储在hashmap(会话)中。我的问题是我在更新no时遇到了困难。数量文本框内的项目。

我的代码如下:

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>

我的servlet:

 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 个答案:

答案 0 :(得分:2)

您期望productId作为请求参数,但您根本没有在表单中传递它。它以null到达,并且不能作为整数解析,因此NumberFormatException: null

将以下内容添加到同一表单中:

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

与具体问题无关,

cartList.put(productId, item);

这条线是不必要的,删除它。它是Java,而不是PHP或其他东西。 item已在地图中。您尚未从地图中删除它。所有更改都将反映在地图中的item引用中,因为它引用同一个对象。