如果取消选中,则不会在HTTPRequest中发送复选框值

时间:2015-11-16 09:43:13

标签: html jsp checkbox

我的jsp页面中有一个复选框

<input type="checkbox" name="myCheck" id="myCheck">

我正在提交表单,在服务器端,我正在尝试检索它 使用

request.getParameter("myCheck");

如果我选中了复选框,它将以true的形式进入请求,否则它不会出现在请求对象中。

我的要求是如果我没有检查它也应该是假的。 有什么建议吗?

更新

我正在使用GET方法,是的,它存在于我提交的表单中。

2 个答案:

答案 0 :(得分:2)

来自accepted answer in stackoverflow

  

如何知道是否已检查

<强>澄清..

例如:

<input type="hidden" name="checkboxNamesList" value="nameCheckbox1" />
<input type="hidden" name="checkboxNamesList" value="nameCheckbox2" />
<input type="hidden" name="checkboxNamesList" value="nameCheckbox3" />
<input type="hidden" name="checkboxNamesList" value="nameCheckbox4" />

然后,您可以从请求中获取checkboxNamesList(它将是一个String []),因此您将拥有所有复选框参数名称。如果您为其中一个复选框获取参数name并且value为null,则表示未选中复选框

好吧,因为请求中没有未选中的复选框,您不知道JSP中的复选框没有被检查,但您需要知道它才能在您的数据文件中写入类似checkbox_name1 = unchecked的内容。

那么,该怎么做?首先,您需要知道请求中存在哪些复选框(取消选中或取消选中)。为此,您可以使用下面的代码并获取JSP中存在的所有复选框的名称:

String[] checkboxNamesList= request.getParameterValues("checkboxNamesList");

然后,让我们寻找未经检查的checbox:

for (int i = 0; i < checkboxNamesList.length; i++) {

    String myCheckBoxValue = request.getParameterValues(checkboxNamesList[i]);

    // if null, it means checkbox is not in request, so unchecked 
    if (myCheckBoxValue == null)
        writer.append(checkboxNamesList[i] + "=unchecked");

    // if is there, it means checkbox checked
    else
        writer.append(checkboxNamesList[i] + "=checked");

}

答案 1 :(得分:1)

我无法理解为什么值不在请求对象中。我认为一个可能的错误是缺失值属性。

关于你的第二个问题: 在你的后端,你必须先定义一个默认值,然后检查为null:

public boolean myCheckBox = false;
if (request.getParameter("myCheck") != null) {myCheckBox = true}