下面是一个控制器示例:
@GetMapping("/pt")
public String getPt(@RequestParam(value = "one", required = false) String one) {
if(one != null) {
return "Not Null";
} else {
return "Null";
}
}
所以当我调用URL时:
http://localhost:8080/pt?one=1
时,控制器返回"0";不为空";这是正确的。则控制器返回"CCD_;Null";这是正确的。
则控制器返回"CCD_;不为空">这样正确吗
如果没有提供param的值,它应该为null,不是吗?或者这个还有什么别的吗?
这种情况只发生在字符串数据类型中,对于Integer、Long等其他数据类型,第三种URL模式会按预期返回Null。
为什么会发生这种情况?是否还需要对String执行其他操作,或者检查String是否为null是错误的?
http://localhost:8080/pt?one=,->字符串一=";
one="quot;考虑值,但如果你说:one=null,这意味着值为null
http://localhost:8080/pt?one=则控制器返回"0";不为空";,这是正确的吗?
是的,在这种情况下,一个映射到空字符串""
。
这种情况只发生在字符串数据类型中,对于Integer、Long等其他数据类型,第三种URL模式会按预期返回Null。
为string映射空字符串是完全有效的。但是对于Integer和Long,没有有效的映射,因此返回null。
是否需要对字符串执行其他操作,或者检查字符串是否为null是错误的?
这取决于您的用例。
- 如果空字符串和null被视为没有输入,您可以参考检查字符串是否不是null和非空来更新您的检查
- 如果空字符串和null有不同的含义,那么您不需要做任何其他操作
@GetMapping("/pt")
public String getPt(@RequestParam(value = "one", defaultValue = "-1") String one) {
if(one == "-1") {
return "Required element of request param";
}
return one;
}