比较两个字符串会得到java.lang.NullPointerException
我正在尝试从HTML帖子中获取复选框值。我的问题是post返回的是on或null,而不是true或false,因此我需要将其转换为true或false以插入数据库比较两个字符串会得到java.lang.NullPointerException,java,Java,我正在尝试从HTML帖子中获取复选框值。我的问题是post返回的是on或null,而不是true或false,因此我需要将其转换为true或false以插入数据库 Boolean hasProfile7 = Boolean.valueOf(request.getParameter("hasProfile7")) hasProfile7即使在“开启”状态下也是错误的 当复选框未勾选(false)时,这会使我的应用程序崩溃,并给出java.lang.NullPointerException 这给
Boolean hasProfile7 = Boolean.valueOf(request.getParameter("hasProfile7"))
hasProfile7即使在“开启”状态下也是错误的
当复选框未勾选(false)时,这会使我的应用程序崩溃,并给出java.lang.NullPointerException
这给了我错误的答案
我能做什么??我只希望bool在“开”时为True,在“空”时为false这是比较常量和字符串的空安全方法:
"some-value".equals(variable) // ok
如果变量
为null,则以下代码段将引发null指针异常,因为不允许对null值调用equals
方法:
variable.equals("some-value") // not recomended
如果值包含“on”,则此方法将返回true,否则将返回false:
public boolean isChecked(final String value) {
if (Objects.isNull(value)) {
return false;
}
if ("on".equals(value.toLowerCase())) {
return true;
}
return false;
}
这是比较常量和字符串的空安全方式:
"some-value".equals(variable) // ok
如果变量
为null,则以下代码段将引发null指针异常,因为不允许对null值调用equals
方法:
variable.equals("some-value") // not recomended
如果值包含“on”,则此方法将返回true,否则将返回false:
public boolean isChecked(final String value) {
if (Objects.isNull(value)) {
return false;
}
if ("on".equals(value.toLowerCase())) {
return true;
}
return false;
}
第一点
Boolean hasProfile7 = Boolean.valueOf(request.getParameter("hasProfile7"))
你在干什么
Boolean.valueOf(<A String>)
在这里,你已经接近做正确的事情了。您的问题是request.getParameter(“hasProfile7”)
返回null,因此您有*null*.equals(“on”)
,这就是为什么您会得到NPE
当您有预定义字符串时,请始终将其放在左侧:
Boolean hasProfile7 = ("on".equals(request.getParameter("hasProfile7"))) ? true : false;
在这里,即使request.getParameter(“hasProfile7”)
为null,您也有任何异常,它只会返回false
第三点
Boolean hasProfile7 = (request.getParameter("hasProfile7") == "on") ? true : false;
这里,您将“上的对象”与对象request.getParameter(“hasProfile7”)
进行比较。如果值相同,则对象不相同
最后一点,为什么要使用三元表达式(request.getParameter(“hasProfile7”).equals(“on”)?真:假代码>
可以翻译成
if true --> true
if false --> false
你可以直接写
Boolean hasProfile7 = "on".equals(request.getParameter("hasProfile7"))
第一点
Boolean hasProfile7 = Boolean.valueOf(request.getParameter("hasProfile7"))
你在干什么
Boolean.valueOf(<A String>)
在这里,你已经接近做正确的事情了。您的问题是request.getParameter(“hasProfile7”)
返回null,因此您有*null*.equals(“on”)
,这就是为什么您会得到NPE
当您有预定义字符串时,请始终将其放在左侧:
Boolean hasProfile7 = ("on".equals(request.getParameter("hasProfile7"))) ? true : false;
在这里,即使request.getParameter(“hasProfile7”)
为null,您也有任何异常,它只会返回false
第三点
Boolean hasProfile7 = (request.getParameter("hasProfile7") == "on") ? true : false;
这里,您将“
上的对象”与对象request.getParameter(“hasProfile7”)
进行比较。如果值相同,则对象不相同
最后一点,为什么要使用三元表达式(request.getParameter(“hasProfile7”).equals(“on”)?真:假代码>
可以翻译成
if true --> true
if false --> false
你可以直接写
Boolean hasProfile7 = "on".equals(request.getParameter("hasProfile7"))
您可以使用“on”.equals(请求…
)来避免NPE。您可以使用“on”.equals(请求…
来避免NPE。