Java request.getParameter,但未选中UI中的复选框。。。servlet(J2EE)

Java request.getParameter,但未选中UI中的复选框。。。servlet(J2EE),java,jakarta-ee,servlets,Java,Jakarta Ee,Servlets,我看过这么多的文章,但从来没有得到这一点。你能解释一下原因吗 以下是我的代码: HTML: 这两者之间有什么区别?如果取消选中复选框,则提交表单时浏览器根本不会发送相应的参数 因此request.getParameter(“mailing”)返回null。在null上调用equals(“on”)会引发NullPointerException 另一方面,“On”.equals(null)不会引发任何异常,因为正确的equals()方法在参数为null时总是返回false 注意 boolean b

我看过这么多的文章,但从来没有得到这一点。你能解释一下原因吗

以下是我的代码:

HTML:


这两者之间有什么区别?

如果取消选中复选框,则提交表单时浏览器根本不会发送相应的参数

因此
request.getParameter(“mailing”)
返回null。在null上调用
equals(“on”)
会引发NullPointerException

另一方面,
“On”.equals(null)
不会引发任何异常,因为正确的
equals()
方法在参数为null时总是返回false

注意

boolean b = "on".equals(request.getParameter("mailing")) ? true : false;
是不好的做法,表现出缺乏理解。它应该简单地写为

boolean b = "on".equals(request.getParameter("mailing"));

foo?真:假
是完全多余的。只需使用
foo
,因为在比较中常量值应该总是排在第一位。@Arin err,不。事实上这是不正确的,而且大多数情况下是错误的做法。@JB Nizet。明白你的意思了。谢谢你纠正我。
boolean b = "on".equals(request.getParameter("mailing")) ? true : false;
boolean b = "on".equals(request.getParameter("mailing"));