不知道一个更好的标题,但这就是我想要做的事情。
我有以下表单,其中显示书籍列表,每个书籍条目后都有一个删除按钮。列表可以是任何长度。为了获得book 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>
答案 0 :(得分:2)
有几种解决方案:
<button name="bookToRemove" value="${cartItem.bookId}" type="submit">Remove</button>
。但是,这并不像IE6和IE7(至少)中规定的那样工作。remove[
开头的参数,然后提取ID。您可以使用更简单的名称,例如remove_${cartItem.bookId}
第三种方式可能是最简单的方式。
单击按钮时,您还可以使用一些JavaScript初始化隐藏字段的值,但这并不比上述方法更容易,并且需要JavaScript。
答案 1 :(得分: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>