首页 > 解决方案 > Spring Webflux:仍然需要可选的 RequestPart/RequestParam?

问题描述

我正在尝试使用可选的请求参数/请求部分,但是当我不提供可选参数时,我的请求就会无限期地挂起。

@RestController
@RequestMapping("/service")
class MyController {
    @PostMapping
    fun print(@RequestPart("name", required = false) name: String) {
        if (name != null)
            print(name)
        else
            print("grr")
    }
}

如果我name在请求中提供参数,它不再肯定挂在邮递员中,请求通过。但是当我不提供参数name并打印“grr”时,我希望它无论如何都会通过。

当您添加另一个所谓的可选属性时,此必需属性无法正常工作(至少在我看来)得到验证。

@RestController
@RequestMapping("/service")
class MyController {
    @PostMapping
    fun print(@RequestPart("name", required = false) name: String,
              @RequestPart("friend_name", required = false) friendsName: String) {
        if (name != null)
            print(name)
        else
            print("grr")
    }
}

现在,当我提供参数name但不提供时friend_name,它表示该值不能为空。

{
    "timestamp": "2018-10-10T09:50:49.305+0000",
    "path": "/service",
    "status": 500,
    "error": "Internal Server Error",
    "message": "Parameter specified as non-null is null: method co.example.controllers.MyController.print, parameter friendsName"
}

我已经尝试了相同的结果@RequestParam@RequestPart获得了相同的结果。

标签: javaspringspring-bootkotlin

解决方案


将您的可选参数标记为可为空。所以:

@RequestPart("name", required = false) name: String?
@RequestPart("friend_name", required = false) friendsName: String?

推荐阅读