美好的一天!
我正在制作一个购物车,我决定在客户结账前暂时将其存储在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
答案 0 :(得分:2)
您期望productId
作为请求参数,但您根本没有在表单中传递它。它以null
到达,并且不能作为整数解析,因此NumberFormatException: null
。
将以下内容添加到同一表单中:
<input type="hidden" name="productId" value="${cart.value.productId}" />
与具体问题无关,
cartList.put(productId, item);
这条线是不必要的,删除它。它是Java,而不是PHP或其他东西。 item
已在地图中。您尚未从地图中删除它。所有更改都将反映在地图中的item
引用中,因为它引用同一个对象。