我的jsp页面中有一个复选框
<input type="checkbox" name="myCheck" id="myCheck">
我正在提交表单,在服务器端,我正在尝试检索它 使用
request.getParameter("myCheck");
如果我选中了复选框,它将以true
的形式进入请求,否则它不会出现在请求对象中。
我的要求是如果我没有检查它也应该是假的。 有什么建议吗?
更新
我正在使用GET方法,是的,它存在于我提交的表单中。
答案 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}