6

MySQL データベースを含むサーブレットがあります。次のようになります。ここに画像の説明を入力

これがそのコードです:

out.println("<table id = \"main_section\" cellspacing=\"1\" bgcolor=\"red\" > ");
out.println ("<tr> ");
out.println("<td >NUMBER</td>");
out.println("<td >PAYMENT</td>");
out.println("<td >RECEIVER</td>");
out.println("<td >VALUE </td>");
out.println("<td >CHECKBOX</td>");
out.println("</tr>");
out.println("<tr>");
for (int i = 0; i < ex.getExpenses().size(); i++) {
    out.println("<td > " + ex.getExpenses().get(i) + "</td>");

    if (i>0 && (i+1)%4==0) {
        out.println("<td><input type=\"checkbox\" name=\"checkbox\"></td>");
        out.println("</tr><tr>");

    }     
}
out.println("</tr>");

私がする必要があるのは、チェックボックスの値の合計を計算する送信ボタンを作成することです。たとえば、NUMBER 1 と 2 がチェックされている場合、送信ボタンの結果は 5577.0 (値 22.0+5555.0) になります。誰でもそれを手伝ってもらえますか?

4

3 に答える 3

26

まず、JSP について学び、サーブレットではなく JSP から HTML マークアップを生成する必要があります。

今あなたの問題のために。これらの各行は、データベース テーブルから取得されます。したがって、これらの各行には ID (主キー) が必要です。行の ID をチェックボックスの値に割り当てます。フォームを送信すると、サーブレットはチェックボックスのすべての ID を受け取ります。データベースからこれらの ID に対応する値を取得し、それらを合計します (または、合計を直接計算するクエリを実行します)。

<input type="checkbox" name="checkedRows" value="${idOfCurrentRow}">

フォーム送信を処理するサーブレットで:

String[] checkedIds = request.getParameterValues("checkedRows");
于 2012-05-18T20:08:40.637 に答える
1

この行を変更します。

out.println("<td><input type=\"checkbox\" name=\"checkbox\"></td>");

読むには:

out.println("<td><input type=\"checkbox\" name=\"selected\" value=\""+ex.getExpenses().get(i-1)+"\"></td>");

これにより、値タグで識別できるチェックボックスが作成されます。「数値」フィールドが主キーなどであるといいのですが。

次に、次の実行で。次の方法で、すべてのチェック済みの値を取得できます。

String[] selected = request.getParameters("selected");

これで、数字を合計することができます。Expenses-list がコードからどのように見えるかよくわかりません。これは機能しないが、それを行う方法についてのアイデアを与えることができる単なる図です:

int sum = 0;
for (int i = 0; i < ex.getExpenses().size(); i++)
  for(int selectedIndex = 0; selectedIndex < selected.length; ++selectedIndex)
    if (ex.getExpenses().get(i) == Integer.parseInt(selected[selectedIndex]))
      sum += ex.getExpenses().get(i-1);
于 2012-05-18T20:10:13.057 に答える
1

あなたはそれを得ることができます

String[] values = req.getParameterValues("checkbox");
于 2012-05-18T20:07:34.460 に答える