gpt4 book ai didi

Spring not null 验证在 kotlin 中抛出 HttpMessageNotReadableException 而不是 MethodArgumentNotValidException

转载 作者:行者123 更新时间:2023-12-02 13:21:29 26 4
gpt4 key购买 nike

我正在使用 Spring 在 Kotlin 中制作简单的应用程序,但我遇到了验证问题。

我有这个实体类:

@Entity
@Table(name = "category")
data class Category(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long?,
@field:NotNull @field:NotEmpty val name: String)

我的 Controller 功能如下:
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
fun create(@Valid @RequestBody category: Category): ResponseEntity<Category>
create有一些代码,但这与问题无关,我的问题是请求正文验证。如果我发送一个名称字段为空的类别,则会抛出 MethodArgumentNotValidException异常,但如果我将 null 发送到字段 name , 抛出的异常 HttpMessageNotReadableException反而。有谁知道是否可以将 null 传递给标有 @NotNull 的字段也扔 MethodArgumentNotValidException在 Kotlin 。

最佳答案

所以您的问题是您将名称字段指定为不可为空,默认情况下,kotlin 的 jackson 模块将检查它并抛出 HttpMessageNotReadableExceptionMissingKotlinParameterException 引起在 json 映射过程中。如果您标记 name归档为可为空的 json 映射将通过并使用 @Valid 进入 Spring 验证阶段那么我们会得到MethodArgumentNotValidException

@Entity
@Table(name = "category")
data class Category(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long?,
@field:NotNull @field:NotEmpty val name: String?)

关于Spring not null 验证在 kotlin 中抛出 HttpMessageNotReadableException 而不是 MethodArgumentNotValidException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54797207/

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