【问题标题】:getting checked values of a check box and send it to a servlet获取复选框的选中值并将其发送到 servlet
【发布时间】:2010-12-17 05:06:55
【问题描述】:

我必须在前面显示一个带有复选框的用户列表。我现在想选择一些名称并将其删除到数据库中。我编写了代码来显示用户。我不知道如何获取选定的值并将其删除。请帮助我这是我尝试过的

<%@ 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>

上面的代码显示名称列表以及复选框。但返回值“用户”而不是数据库中的名称。此外,如果我取消选中名称,它会再次返回用户。

[*]abc-----> returns dummy,user
if i uncheck this []user returns dummy,user0,user1 

我需要获取用户名列表。

【问题讨论】:

  • 您是否收到错误、没有更改、错误更改?请告诉我们发生了什么,它将帮助我们确定问题所在。

标签: javascript html jsp servlets


【解决方案1】:

您将在每个复选框周围打印一个全新的 &lt;html&gt;&lt;form&gt;。您的 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。您需要重写您的代码,以便所有复选框和提交按钮都以 same 形式结束:

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

【讨论】:

    【解决方案2】:

    您需要为每个用户的每个复选框分配不同的名称。这样,获取 POSTed 表单的 servlet 可以检查每个复选框名称(例如 user1...userX),如果设置了其值,则可以删除相应的用户。请注意,如果未设置复选框,则不会为该名称发送表单编码参数,因此您实际上只需检查发送了哪些名称并将其删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-01
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2014-02-05
      • 1970-01-01
      相关资源
      最近更新 更多