繁体   English   中英

从Servlet获取复选框值

[英]Getting checkbox value(s) from a Servlet

我有一个带有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>");

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

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

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

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

在处理表单提交的servlet中:

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

你可以得到它

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

改变这一行:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM