Spring not not null验证在kotlin中抛出HttpMessageNotReadableException而不是MethodArgumentNotValidException(示例代
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring not not null验证在kotlin中抛出HttpMessageNotReadableException而不是MethodArgumentNotValidException(示例代相关的知识,希望对你有一定的参考价值。
我正在使用Spring在Kotlin中进行简单的应用,但是我在验证时遇到了问题。
我有这个实体类:
@Entity
@Table(name = "category")
data class Category(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long?,
@field:NotNull @field:NotEmpty val name: String)
我的控制器功能如下:
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
fun create(@Valid @RequestBody category: Category): ResponseEntity<Category>
create
有一些代码,但它与问题无关,我的问题是请求正文验证。如果我发送一个带有空名称字段的类别,则抛出一个MethodArgumentNotValidException
异常,但是如果我向字段name
发送null,则抛出HttpMessageNotReadableException
异常。有没有人知道是否有可能将null传递给标有@NotNull
的字段,以便在Kotlin中抛出MethodArgumentNotValidException
。
所以你的问题是你指定名称字段不可为空,默认情况下,kotlin的jackson模块将检查它并在json映射过程中抛出由HttpMessageNotReadableException
引起的MissingKotlinParameterException
。如果你将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 not null验证在kotlin中抛出HttpMessageNotReadableException而不是MethodArgumentNotValidException(示例代的主要内容,如果未能解决你的问题,请参考以下文章
springboot调整MybatisPlus全局的验证策略
MySQL中 IS NULLIS NOT NULL!= 能用上索引吗?
完美解决Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=
完美解决Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=
完美解决Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=
完美解决Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=