0

より良いタイトルはわかりませんが、これが私がやろうとしていることです。

私は次のフォームを持っています。このフォームには本のリストが表示され、すべての本のエントリの後に削除ボタンがあります。リストは任意の長さにすることができます。設定したブックIDを取得するためname="remove[${cartItem.bookId}]"に、サーブレットでこの値を取得するにはどうすればよいですか?毎回nullrequest.getParameter("remove")を返します。request.getParameterValues("remove")

  <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. グローバルフォームではなく、カートアイテムごとに1つのフォームを作成し、非表示のフィールドを使用して、削除する書籍を含めます。

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 に答える