kotlin Spring Boot @Validated校验不生效

kotlin写后端就是吭多,啥东西都有那么一点不同。
这一次是@Validated不生效
然后找到这篇:Kotlin & Spring boot 使用@Valid校验无效解决方法

它讲到
原因分析:

在 java 中,将 validation 注解到实体类属性或者 get/set 方法上,但是在 kotlin 中,属性直接写在构造函数中,validation 注解并没有作用到属性上。

解决方法:

使用 @field: 标识符,field标识符只允许在属性的访问器函数内使用。它能够 validation 校验注解作用与属性。

所有可以用的写法是


import javax.validation.constraints.Min
import javax.validation.constraints.NotBlank
import javax.validation.constraints.NotNull

data class Param(
        @field:NotBlank(message = "machine code 不能为空")
        val a: String?,
        @field:NotBlank(message = "client id 不能为空")
        val b: String?,
        @field:NotBlank(message = "client secret 不能为空")
        val c: String?,
        @field:NotBlank(message = "access token 不能为空")
        val d: String?,
        val e: String?,
        @field:NotNull(message = "expires in 不能为空")
        @field:Min(value = 1, message = "expires in 必须为正整数")
        val f: Int?,
        val g: Int?
)

你可能感兴趣的:(编程错误)