获取复选框的选中值并将其发送到servlet
问题描述:
我必须在其前面显示一个复选框的用户列表。我现在想要选择一些名称并在数据库中删除它。我已经编写了代码来显示用户。我不知道如何获取选定的值并将其删除。请帮助我这里是我已经尝试过获取复选框的选中值并将其发送到servlet
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%String user=request.getParameter("Users"); %>
<script type="text/javascript">
var chk="dummy";
function doSubmit(theClick){
window.open("AddUser.jsp");
return false;
}
function setValue(chVal)
{
chk=chk+","+chVal;
alert(chk);
}
function doDelete(theClick){
document.buttons.action = "AddUserServlet?type=delete&name="+chk;
alert(chk);
document.buttons.submit();
}
</script>
</head>
<body>
<center>
<!-- action="AddUserServlet"-->
<%
try{
String User[]=user.trim().split(" ");
for(int i=0;i<User.length;i++){
out.println("<html>");
out.println("<body>");
out.println("<form>");
out.println("<input type='checkbox' value='User[i]' onClick='setValue(this.value)' name='user'>"+User[i]+"</input>");
//out.println("<input type='checkbox' value='User'+i+ name='user1'>"+User[i]+"</br>"+"</form>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
//out.println("<input type='checkbox' value='User'+i+ name='user1'>"+User[i]+"</br>"+"</form>");
}
}catch(Exception e){
e.printStackTrace();
}
%>
<!--
<form method="Post" name="buttons">
<input type='checkbox' value='User' onClick="setValue(this.value)" name='user1'></input>
<input type='checkbox' value='User1' onClick="setValue(this.value)" name='user1'></input>
<input type='checkbox' value='User2' onClick="setValue(this.value)" name='user1'></input>
<div id="add"></div>
</form>-->
<form method="Post" name="add">
<input type="submit" value="ADD" onclick="return doSubmit(this)">
<input type="submit" value="MODIFY" onClick="return doSubmit(this)">
<input type="submit" value="DELETE" onClick="return doDelete(this)">
</form>
</center>
</body>
</html>
上面的代码显示名称列表以及复选框。但是返回值“user”而不是数据库中的名字。另外,如果我取消选中某个名称,则会再次返回用户。
[*]abc-----> returns dummy,user
if i uncheck this []user returns dummy,user0,user1
我需要用户名列表。
答
您需要为每个用户的每个复选框分配不同的名称。这样,获取POST表单的servlet就可以检查每个复选框的名称(例如user1
... userX
),如果设置了它的值,则可以删除相应的用户。请注意,如果复选框未设置,那么将不会为该名称发送表单编码参数,因此您可以真正检查以查看哪些名称已发送并删除。
答
您正在每个复选框周围打印全新的<html>
和<form>
。您的HTML在浏览器中最终显示为:
<html>
<head></head>
<body>
<html><body><form><input type="checkbox"></form></body></html>
<html><body><form><input type="checkbox"></form></body></html>
<html><body><form><input type="checkbox"></form></body></html>
<form><input type="submit"></form>
</body>
</html>
这是syntactically invalid HTML。你需要让所有的复选框,并提交按钮在相同的形式结束了重写代码:
<html>
<head></head>
<body>
<form>
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<input type="submit">
</form>
</body>
</html>
那么你也并不需要那些丑陋的JavaScript的解决方法。您只需给复选框使用相同的名称,但使用不同的值。这样你就可以通过HttpServletRequest#getParameterValues()
来获取选中的值。
String[] users = request.getParameterValues("user");
您是否收到错误,没有更改,错误的更改?请告诉我们发生了什么,它会帮助我们确定问题所在。 – 2010-12-17 05:12:52