Jan*_*tze 7 java spring bean-validation kotlin spring-webflux
我正在尝试在Webflux中使用bean验证.这是我到目前为止:
@PostMapping("contact")
fun create(@RequestBody @Valid contact: Mono<Contact>) : Mono<Contact> {
return contact.flatMap { contactRepository.save(it) }
.doOnError{ Error("test") }
}
Run Code Online (Sandbox Code Playgroud)
验证不起作用......我希望Error("test")会显示...
有人有一个有效的例子(Java或Kotlin)吗?
UPDATE
这是一个存储库,因此可以复制:https://github.com/jwz104/webflux-validation-test
请求:
curl --request POST \
--url http://localhost:8080/tickets \
--header 'content-type: application/json' \
--data '{
"email": "",
"name": "",
"message": ""
}'
Run Code Online (Sandbox Code Playgroud)
将联系人重命名为故障单,但一切都仍然相同.
您在示例项目中放置的注释实际上是对Ticket类的构造函数参数的注释.对于Spring验证,您需要注释字段.您可以使用注释使用站点目标在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
)
Run Code Online (Sandbox Code Playgroud)
这与以下控制器功能一起工作并按预期返回错误:
@PostMapping("tickets")
fun create(@RequestBody @Valid contact: Mono<Ticket>) : Mono<Ticket> {
return contact.flatMap { ticketRepository.save(it) }
.doOnError{ Error("test") }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1916 次 |
| 最近记录: |