gpt4 book ai didi

java - Spring webflux bean验证不起作用

转载 作者:IT老高 更新时间:2023-10-28 13:42:16 24 4
gpt4 key购买 nike

我正在尝试在 Webflux 中使用 bean 验证。这是我目前所拥有的:

@PostMapping("contact")
fun create(@RequestBody @Valid contact: Mono<Contact>) : Mono<Contact> {
return contact.flatMap { contactRepository.save(it) }
.doOnError{ Error("test") }
}

验证不起作用...我希望 Error("test") 会显示...

有人有工作示例(Java 或 Kotlin)吗?

更新

这是一个存储库,因此可以复制:https://github.com/jwz104/webflux-validation-test

请求:

curl --request POST \
--url http://localhost:8080/tickets \
--header 'content-type: application/json' \
--data '{
"email": "",
"name": "",
"message": ""
}'

将联系人重命名为工单,但一切还是一样。

最佳答案

您在示例项目中放置的注解实际上是对 Ticket 类的构造函数参数的注解。对于 Spring 验证,您需要对字段进行注释。您可以使用 annotation use-site targets 在 Kotlin 中执行此操作.

在这种特定情况下,您的 Ticket 类应如下所示:

data class Ticket(
@field:Id
@field:JsonSerialize(using = ToStringSerializer::class)
val id: ObjectId = ObjectId.get(),

@field:Email
@field:Max(200)
@field:NotEmpty
val email: String,

@field:NotEmpty
@field:Size(min = 2, max = 200)
val name: String,

@field:NotEmpty
@field:Size(min = 10, max = 2000)
val message: String
)

这与以下 Controller 功能将按预期工作并返回错误:

@PostMapping("tickets")
fun create(@RequestBody @Valid contact: Mono<Ticket>) : Mono<Ticket> {
return contact.flatMap { ticketRepository.save(it) }
.doOnError{ Error("test") }
}

关于java - Spring webflux bean验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48439953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com