带有可选参数的@RequestParam在java 8控制器中抛出“param not present”错误

问题描述 投票:0回答:1

我们有一个弹簧控制器,其参数标记为可选,如下所示

String myMethod(
        @RequestParam(value = "email") Optional<String> email,
        @RequestParam(value = "userName") Optional<Long> userId) {

如果我们的请求没有电子邮件,这会引发错误,即使 Java 8 提到不需要标记为可选的参数。

那么为什么仍然检查参数?

java-8 controller
1个回答
0
投票

您的Spring框架是什么版本?因为它是在 Spring 的后续版本中引入的。

在Spring MVC中,从4.3版本开始,如果使用@RequestParam使用Optional作为方法参数,并且请求中缺少该参数,Spring会自动使用Optional.empty()填充Optional。

© www.soinside.com 2019 - 2024. All rights reserved.