【发布时间】:2021-10-06 01:53:04
【问题描述】:
我有一个控制器:
@PostMapping
fun create(
@RequestBody @Valid request: MyContainer<CreateRequest>,
): MyContainer<Dto> = service.create(request.objects)
MyContainer 和 CreateRequest 看起来像这样:
class MyContainer<T>(
@field:Valid // also tried param
@field:NotEmpty(message = "The list of objects can not be null or empty")
var objects: List<@Valid T>? = listOf(),
)
class CreateRequest(
@field:NotNull(message = "Value can not be null")
var value: BigDecimal? = null,
)
在我的测试中,“外部”验证有效,也就是说,如果我发送 { "objects": null } 或 { "objects": [] },我确实会收到预期的错误消息。但我无法让它验证列表的内容。根据我对 Java 的理解,List<@Valid T> 应该可以工作,但无论如何我无法让它在 kotlin 中工作。
我想我可能需要在 List<@Valid T> 中的 @Valid 上设置某种使用站点目标,但我找不到适用于此用例的目标。
我怎样才能使验证适用于列表?
【问题讨论】:
标签: spring spring-boot validation kotlin generics