0

不知道更好的标题,但这是我想要做的。

我有以下表格,其中将显示书籍列表,并且在每个书籍条目之后都有一个删除按钮。该列表可以是任意长度。为了获取我设置的书籍 ID,name="remove[${cartItem.bookId}]"但如何在 servlet 中获取此值?request.getParameter("remove")并且request.getParameterValues("remove")每次都返回 null。

  <form method="post" action="removeBookFromCart">
<c:forEach var="cartItem" items="${sessionScope.cart.cartItems}">
        <tr>
          <td><c:out value="${cartItem.title}" /></td>
          <td><input type="submit" name="remove[${cartItem.bookId}]" value="Remove"/></td>
        </tr>  
    </c:forEach>
    </form>
4

2 回答 2

2

有几种解决方案:

  1. 使用<button name="bookToRemove" value="${cartItem.bookId}" type="submit">Remove</button>. 然而,这并不像 IE6 和 IE7 中所指定的那样工作(至少)。
  2. 遍历参数,找到以 开头的参数,remove[然后提取ID。您可以使用更简单的名称,例如remove_${cartItem.bookId}
  3. 每个购物车项目创建一个表单,而不是全局表单,并使用隐藏字段来包含要删除的书。

第三种方法可能是最简单的一种。

您也可以使用一些 JavaScript 在单击按钮时初始化隐藏字段的值,但这并不比上述方法容易,并且需要 JavaScript。

于 2012-04-30T22:55:41.067 回答
1

您必须使用隐藏参数:

<input type="hidden" name="remove" value="${cartItem.bookId}"/>

让提交按钮是这样的:

<input type="submit" value="Remove"/>

编辑:是的,您必须为每本书创建一个表单元素:

<c:forEach var="cartItem" items="${sessionScope.cart.cartItems}">        
        <tr>
          <td><c:out value="${cartItem.title}" /></td>
          <td>
            <form method="post" action="removeBookFromCart">
             <input type="submit" value="Remove"/>
             <input type="hidden" name="remove" value="${cartItem.bookId}"/>
            </form>
          </td>
        </tr>      
   </c:forEach>
于 2012-04-30T22:48:58.787 回答