Eri*_*rik 3 validation rest spring kotlin
我正在使用 Spring 在 Kotlin 中制作简单的应用程序,但我在验证方面遇到了问题。
我有这个实体类:
@Entity
@Table(name = "category")
data class Category(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long?,
@field:NotNull @field:NotEmpty val name: String)
Run Code Online (Sandbox Code Playgroud)
我的控制器功能如下:
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
fun create(@Valid @RequestBody category: Category): ResponseEntity<Category>
Run Code Online (Sandbox Code Playgroud)
create有一些代码,但与问题无关,我的问题是请求正文验证。如果我发送一个名称字段为空的类别,则会引发异常MethodArgumentNotValidException,但如果我将 null 发送到该字段name,则会引发异常HttpMessageNotReadableException。有谁知道是否可以将 null 传递给标记为 的字段,@NotNull也可以MethodArgumentNotValidException在 Kotlin 中抛出。
所以你的问题是你将 name 字段指定为不可空,默认情况下 kotlin 的 jackson 模块将检查它并在json 映射过程中抛出HttpMessageNotReadableException哪个原因。MissingKotlinParameterException如果您name将归档标记为可空 json 映射将通过并进入 spring 验证阶段,那么@Valid我们将得到MethodArgumentNotValidException
@Entity
@Table(name = "category")
data class Category(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long?,
@field:NotNull @field:NotEmpty val name: String?)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2461 次 |
| 最近记录: |