Spring Boot 在GET请求时验证复杂对象

omhiaaxx  于 2022-12-18  发布在  Spring
关注(0)|答案(1)|浏览(211)

我正在尝试对get请求的一个复杂参数应用输入验证。

data class FilterDTO (

    @Valid
    @NotNull
    val id: Long? = null,

    @NotNull
    val code: String? = null
)
@Validated
@RestController
@RequestMapping("/foo")
class FooController {

    @GetMapping
    fun get(
        @Valid filter: FilterDTO,
        @Valid @NotNull @RequestParam("bar") bar: String?
    ) {
      // ...
    }

}

上述端点正确验证了bar参数上的@NotNull,但似乎忽略了复杂FilterDTO对象上的验证。
我试过:

  • FilterDTO的属性上添加@Valid(即使使用Kotlin的@field:@get:
  • FilterDTO整个类上添加@Validated(??)

无法让它工作。
是否可以验证复杂的get参数?
谢谢

kupeojn6

kupeojn61#

刚刚发现了问题。对于来到这里的任何人来说,我应该用@field:注解我想要的验证。所以简单地将我的DTO更改为以下内容就可以了:

data class FilterDTO (

    @field:NotNull
    val id: Long? = null,

    @field:NotNull
    val code: String? = null
)

相关问题