我看过很多文章,但从来没有明白这一点。你能解释一下原因吗?
这是我拥有的代码:
HTML:
<input type="checkbox" name="mailing" /> Would you like to join our mailing list ?
服务器:
request.getParameter("mailing").equals("on") ? true : false; // Error if I have NOT checked the checkbox.
"on".equals(request.getParameter("mailing")) ? true : false; // No Error - Works as Expected.
这两个有什么区别?
最佳答案
当取消选中复选框时,浏览器在提交表单时根本不会发送相应的参数。
因此 request.getParameter("mailing")
返回 null。对 null 调用 equals("on")
会引发 NullPointerException。
另一方面,"on".equals(null)
不会引发任何异常,因为正确的 equals()
方法始终返回 false当参数为空时。
请注意
boolean b = "on".equals(request.getParameter("mailing")) ? true : false;
这是不好的做法,并且表现出缺乏理解。它应该简单地写为
boolean b = "on".equals(request.getParameter("mailing"));
关于java - request.getParameter 不检查 UI 中的复选框...Servlet (J2EE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30468198/