2017-01-28 8 views
0

からサーブレットに選択し、チェックボックスを使用してテーブルの行の値を取得することです。..私のコードがどのようにここにJSP

 <form action="order" method="post"> 
    <table border="1" cellpadding="15" cellspacing="0"> 
      <tr> 
       <th>Product</th> 
       <th>rate</th> 
       <th>Quantity</th> 
       <th>Manufacture Name</th> 
       <th>Select Items</th> 
      </tr> 
      <c:forEach var="entry" items="${productModel.entries}"> 
       <tr> 
        <td>${entry.pname }</td> 
        <td>${entry.rate }</td> 
        <td> 
         <select name = "quantity" style="width: 90px; "> 
           <c:set var="total" value="${entry.currentstock}" /> 
          <c:forEach begin="0" end="${total-1}" step="1" varStatus="loop"> 
           <option>${loop.count}</option> 
          </c:forEach> 
         </select> 
        </td> 
        <td>${entry.manu_name }</td> 
        <td><input type="checkbox"></td> 
       </tr> 
      </c:forEach> 
     </table> 
     <input type="submit" name="order" value="Confirm Order"> 
     </form> 

私が選択したチェックボックスを取得し、サーブレットにこれらの値を取得したいです。

+0

これはJavaの質問ですか、Javascriptの質問ですか?これらは同じものではありません。 –

+0

@JoeCはJSPのように見えるので、Javaベースの技術であるJava Server Pagesです。私はここにJavascriptを見ない。 –

+0

これはjspの質問です。jspはJavaScriptを使って行う方法ではないにしても、テーブルの行の値を取る方法はありません。 –

答えて

0

に問題が私を導いway.pleaseを見つけることができないあなたのhtmlである:

<option>${loop.count}</option> 

それは選択optionタグのvalue属性がに提出される

<option value="${loop.count}">${loop.count}</option> 

する必要がありますサーバー(サーブレット)。
これは、select-optionタグの組み合わせのデフォルトの動作です:

<select name="select1"> 
    <option value="value1">label1</option> 
    <option value="value2">label2</option> 
</select> 

EDIT:彼らに

<td>${entry.pname }</td> 

あなたを表示するのに十分ではない、他の値を送信するために

inputのようなフォームフィールド要素を追加する必要があります。

<td>${entry.pname}<input type="hidden" name="name" value="${entry.pname}"/></td> 

フィールドを編集可能にする場合は、typetextとすることができます。

<td><input type="text" name="name" value="${entry.pname}"/></td> 

他のすべてのテーブル行でも同じ操作を行う必要があります。

さらに、1つのフォームを使用する代わりに、各行を1つのフォームにすることをお勧めします。チェックボックスの代わりに、送信ボタンを表示させることもできます。

<table border="1" cellpadding="15" cellspacing="0"> 
     <tr> 
      <th>Product</th> 
      <th>rate</th> 
      <th>Quantity</th> 
      <th>Manufacture Name</th> 
      <th>Select Items</th> 
     </tr> 
     <c:forEach var="entry" items="${productModel.entries}"> 
      <tr> 
       <form action="order" method="post"> 
       ... 
       <td><input type="submit" name="order" value="Confirm Order"></td> 
       </form> 
      </tr> 
     </c:forEach> 
    </table> 

    </form> 

上記の解決策は、1行を送信するためのものです。

しかし、ユーザーが一度に多くの製品を注文できるようにしたいとします。
より良い方法は、フォーム生成時に知っているプロダクトIDだけを使用することです。 フォーム/行に、プロダクトIDの非表示入力と数量の選択が含まれています。
提出後、DBから同じ製品を取得し、その詳細にアクセスできます。

+0

しかし、サーブレットにselectesテーブルの行の値を取得する方法...あらかじめ感謝 –

+0

私は答えを拡張しました。 –

関連する問題