java - request.getParameter 不检查 UI 中的复选框...Servlet (J2EE)

标签 java jakarta-ee servlets

我看过很多文章,但从来没有明白这一点。你能解释一下原因吗?

这是我拥有的代码:

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/

相关文章:

java - 如何使用 org.codehaus.mojo 的 keytool API?

java - scala 中的多变量循环

java - Cobertura 无法识别 Java 1.7 Diamond 运算符

java - 如何使用 openjpa 将实体从一个数据库移动到另一个数据库?

java - 从 servlet 访问 JSF session 范围的 bean,该 servlet 由 JSF webapp 中嵌入的 applet 调用

java - java中的PubSub模型

exception - 为什么我无法捕获 EJB 异常?

java - 如何获取过滤器中的当前 Servlet 对象?

java - WebSphere 8.5.5 不返回 JAR 签名者

java - 如何将数据库中的图像嵌入到网页中