2011-03-16 112 views
1

美好的一天!更新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 

回答

2

你期待productId作爲請求參數,但你是不是在形式傳遞給它的。它以null到達,這不能作爲整數解析,因此不能解析爲NumberFormatException: null

以下添加到相同的形式:

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

無關的具體問題,

cartList.put(productId, item); 

這條線是不必要的,將其刪除。它是Java,而不是PHP或其他。 item已經在地圖中。你還沒有從地圖中刪除它。所有更改將只反映在地圖中的item參考中,因爲它指的是同一個對象。

+0

你是救命恩人!謝謝。 :) – newbie

+0

不客氣。 – BalusC