Spring Boot不是必需的@RequestParam,具有字符串数据类型



下面是一个控制器示例:

@GetMapping("/pt")
public String getPt(@RequestParam(value = "one", required = false) String one) {
if(one != null) {
return  "Not Null";
} else {
return  "Null";
}
}

所以当我调用URL时:

  1. http://localhost:8080/pt?one=1时,控制器返回"0";不为空";这是正确的。

  2. 则控制器返回"CCD_;Null";这是正确的。

  3. 则控制器返回"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有不同的含义,那么您不需要做任何其他操作
如果未提供请求参数或请求参数为空,请使用defaultValue属性。
@GetMapping("/pt")
public String getPt(@RequestParam(value = "one", defaultValue = "-1") String one) {
if(one == "-1") {
return "Required element of request param";
}
return one;
}

相关内容

  • 没有找到相关文章

最新更新