Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 对于@RequestParam控制器方法参数,是否可以使用@Nullable代替required=false?_Spring Boot_Spring Mvc - Fatal编程技术网

Spring boot 对于@RequestParam控制器方法参数,是否可以使用@Nullable代替required=false?

Spring boot 对于@RequestParam控制器方法参数,是否可以使用@Nullable代替required=false?,spring-boot,spring-mvc,Spring Boot,Spring Mvc,似乎有两种记录在案的方法将弹簧控制器方法的参数标记为可选: (1)将required=false添加到注释: public String books(@RequestParam(name = "category", required = false) String category) { public String books(@RequestParam(name = "category") Optional<String> category) { public String b

似乎有两种记录在案的方法将弹簧控制器方法的参数标记为可选:

(1)将
required=false
添加到注释:

public String books(@RequestParam(name = "category", required = false) String category) {
public String books(@RequestParam(name = "category") Optional<String> category) {
public String books(@Nullable @RequestParam(name = "category") String category) {

(2)将参数类型更改为:

public String books(@RequestParam(name = "category", required = false) String category) {
public String books(@RequestParam(name = "category") Optional<String> category) {
public String books(@Nullable @RequestParam(name = "category") String category) {

我更喜欢#3,但如果有文档记录,我会觉得使用它更好。我已经搜索了文档,但我能找到的只是@Nullable:

一个公共Spring注释,用于声明注释的元素可以 在某些情况下无效

我找不到一个显示与
@RequestParam
一起使用的
@Nullable
的示例


有人知道这是否被记录在哪里吗?

@Nullable
是一个众所周知的注释,可以应用于字段、方法和参数。知道它的受欢迎程度,Spring可能不介意不提它。所以,使用它时感觉很爽

现在来选择使用验证:我要么选择
@Nullable
要么选择
required=false


Optional
在Java8中用于防止
NullPointerException
。所以,
谢谢你的回答。我同意不为此使用
可选
。人们似乎普遍认为,
可选
不应用于请求参数。事实上,IntelliJ将用警告标记它。即便如此,Spring选择以合理的方式对待它也是有道理的。在阅读您的答案之前,我没有想到使用
可选
并不意味着
必需
会切换到
错误
。相反,该值永远不会是
false
。是的,正如我已经提到的
Optional
的思想是使应用程序
null
安全。如果这回答了你的问题,请接受它作为回答。如果你还有其他疑问,尽管问吧。来不及编辑我的评论了。我的意思是说这个值永远不会是
null
。。