如何从JSP中提交的按钮获取值?

时间:2012-04-30 22:42:12

标签: html jsp

不知道一个更好的标题,但这就是我想要做的事情。

我有以下表单,其中显示书籍列表,每个书籍条目后都有一个删除按钮。列表可以是任何长度。为了获得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>

2 个答案:

答案 0 :(得分:2)

有几种解决方案:

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

    单击按钮时,您还可以使用一些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>