6

我有一个带有 MySQL 数据库的 servlet。它看起来像这样:在此处输入图像描述

这是它的一段代码:

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 (VALUE 22.0+5555.0) 的结果。任何人都可以帮我吗?

4

3 回答 3

26

首先,您应该了解 JSP 并从 JSP 而不是从 servlet 生成 HTML 标记。

现在解决你的问题。这些行中的每一行都来自一个数据库表。所以这些行中的每一行都应该有一个 ID(主键)。将行的 ID 分配给复选框的值。当您提交表单时,servlet 将收到选中复选框的所有 ID。从数据库中获取这些 ID 对应的值,并对它们求和(或执行直接计算总和的查询):

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

在处理表单提交的 servlet 中:

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

你可以通过

String[] values = req.getParameterValues("checkbox");
于 2012-05-18T20:07:34.460 回答
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");

现在,您只需将数字相加即可。我不太明白您的费用清单从代码中的样子。这只是一个不起作用的插图,但可以为您提供如何做到这一点的想法:

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 回答