我们有一个弹簧控制器,其参数标记为可选,如下所示
String myMethod(
@RequestParam(value = "email") Optional<String> email,
@RequestParam(value = "userName") Optional<Long> userId) {
如果我们的请求没有电子邮件,这会引发错误,即使 Java 8 提到不需要标记为可选的参数。
那么为什么仍然检查参数?
您的Spring框架是什么版本?因为它是在 Spring 的后续版本中引入的。
在Spring MVC中,从4.3版本开始,如果使用@RequestParam使用Optional作为方法参数,并且请求中缺少该参数,Spring会自动使用Optional.empty()填充Optional。