我有一个带有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)。 任何人都可以帮助我吗?
答案 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);