从Servlet获取复选框值

时间:2012-05-18 19:57:49

标签: java mysql html servlets

我有一个带有MySQL数据库的servlet。它看起来像这样:enter image description here

这是它的代码:

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>");

我需要做的是创建一个提交按钮,用于计算复选框的VALUE总和。例如,如果选中了NUMBER 1和2,则提交按钮的结果应为5577.0(VALUE 22.0 + 5555.0)。 任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:24)

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

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

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

在处理表单提交的servlet中:

String[] checkedIds = request.getParameterValues("checkedRows");

答案 1 :(得分:1)

你可以通过

获得它
String[] values = req.getParameterValues("checkbox");

答案 2 :(得分: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>");

这将创建一个复选框,您可以通过value-tag识别自己。我希望“数字”字段是主键等。

然后下次运行。您可以通过以下方式获取所有选中的值:

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);