查找是不是在 servlet 中选中复选框

Posted

技术标签:

【中文标题】查找是不是在 servlet 中选中复选框【英文标题】:Find whether check boxes are checked inside a servlet查找是否在 servlet 中选中复选框 【发布时间】:2013-05-09 18:42:27 【问题描述】:

我在表单中有几个复选框,我只是想检查它们是否被选中。

如果选中,我需要将他们的 id 存储在数据库中(我可以做到)。但我的问题是如何确定是否被选中,而不是一次检查每个复选框。 我需要检查它是否在 servlet 中被检查。

这是我的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Role Id<input type="text" name="roll_id"/><br>
Role Name<input type="text" name="roll_name"/><br>
Role Description<textarea name="roll_desc"></textarea><br>
<br>
<br>

Screen1<br>

tab1<br>

<input type="checkbox" name="s1_t1_view" value="s1_t1_view" >view<br>
<input type="checkbox" name="s1_t1_add" value="s1_t1_add" >add<br>
<input type="checkbox" name="s1_t1_edit" value="s1_t1_edit" >edit<br>
<input type="checkbox" name="s1_t1_delete" value="s1_t1_delete" >delete<br>

tab2<br>

<input type="checkbox" name="s1_t2_view" value="s1_t2_view" >view<br>
<input type="checkbox" name="s1_t2_add" value="s1_t2_add" >add<br>
<input type="checkbox" name="s1_t2_edit" value="s1_t2_edit" >edit<br>
<input type="checkbox" name="s1_t2_delete" value="s1_t2_delete" >delete<br>



Screen2<br>

tab1<br>

<input type="checkbox" name="s2_t1_view" value="s2_t1_view" >view<br>
<input type="checkbox" name="s2_t1_add" value="s2_t1_add" >add<br>
<input type="checkbox" name="s2_t1_edit" value="s2_t1_edit" >edit<br>
<input type="checkbox" name="s2_t1_delete" value="s2_t1_delete" >delete<br>

tab2<br>

<input type="checkbox" name="s2_t2_view" value="s2_t2_view" >view<br>
<input type="checkbox" name="s2_t2_add" value="s2_t2_add" >add<br>
<input type="checkbox" name="s2_t2_edit" value="s2_t2_edit" >edit<br>
<input type="checkbox" name="s2_t2_delete" value="s2_t2_delete" >delete<br>
<input type="submit" name="sumbit" text="submit">
</body>
</html>

但在我的代码中,我有几个复选框。我需要对每个复选框进行硬编码。有没有办法让我把它放在一个循环中并检查所有复选框?

【问题讨论】:

如果您需要使用一组复选框,则name属性对于每个分组的复选框必须相同! 是的,确实有效。谢谢。 【参考方案1】:

为简单起见,您可以使用name 属性来获取数据,因为您为每个复选框使用不同的名称。

在 Servlet 中:

String[] s1_t1_view = request.getParameterValues("s1_t1_view");
String[] s1_t1_add = request.getParameterValues("s1_t1_add");

如果您想使用复选框组来让用户在多个值之间进行选择,您将需要在 servlet 中迭代组。你可以用这个:

在 HTML 中:(同名 = 同组)

<input type = "checkbox" name = "s1_t1" value = "s1_t2_view"   >View  <br>
<input type = "checkbox" name = "s1_t1" value = "s1_t2_add"    >Add   <br>
<input type = "checkbox" name = "s1_t1" value = "s1_t2_edit"   >Edit  <br>
<input type = "checkbox" name = "s1_t1" value = "s1_t2_delete" >Delete<br>

在 Servlet 中:

String[] results = request.getParameterValues("s1_t1");
for (int i = 0; i < results.length; i++) 
    System.out.println(results[i]); 

【讨论】:

是的,这个有帮助。谢谢。【参考方案2】:

你可以使用

String[] checked = request.getParameterValues("checkboxName");

然后检查checked的值

【讨论】:

但是在我的代码中我有几个复选框。我需要对每个复选框进行硬编码。有没有办法让我把它放在一个循环中并检查所有复选框?【参考方案3】:

将隐藏字段创建为

现在在您的 servlet 中为:String[] names = request.getParameterValues("checkbox");

PrintWriter pw = new PrintWriter(new File("/Desktop/sticker.txt"));
for(int i=0; i < names.length; i++) 
    if(i + 1 < names.length && names[i].equals(names[i+1])) 
        pw.write(names[i] + ",true\n");
        ++i;
     else 
        pw.write(names[i]+",false\n");
    


pw.close();

【讨论】:

【参考方案4】:

对我来说,这个很有效。

    String[] selecttype=request.getParameterValues("selectType");

//selectType is the name of checkbox in jsp page.

这将返回选中的复选框值。

【讨论】:

这个答案与其他解决方案有何不同?

以上是关于查找是不是在 servlet 中选中复选框的主要内容,如果未能解决你的问题,请参考以下文章

确定是不是在 Ionic 2 中选中了复选框

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?