Spring boot Spring验证器被忽略
我有一个定义如下的函数:Spring boot Spring验证器被忽略,spring-boot,validation,Spring Boot,Validation,我有一个定义如下的函数: import org.springframework.web.bind.annotation.RestController import org.springframework.web.bind.annotation.RequestMapping import javax.validation.Valid @RestController @RequestMapping("/test") class MyController { @Post
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.RequestMapping
import javax.validation.Valid
@RestController
@RequestMapping("/test")
class MyController {
@PostMapping
fun someFunction(
@Valid
@RequestBody req: SomeRequest
): RegisterRes {
...
}
}
在requestBody中,我在此字段上使用NotBlank验证:
import javax.validation.constraints.*
data class SomeRequest(
@NotBlank(message = "Field is mandatory.")
val field: String
)
但是,当我传递一个带有空字符串的json对象时,该字段始终通过验证:
{
"field": ""
}
这里怎么了
其他信息: 启动以下启动程序以启用验证:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
事实证明,对于Kotlin,我们需要用@field注释每个“Java”约束。例如:
@field:NotBlank
用Kotlin编写的自定义验证器不需要此功能。您是否也可以添加导入语句,这将有助于成员复制此问题?当然,imports added.works对我有效,唯一的区别是我使用的是java,而不是Kotlin,这就是区别所在。对于Kotlin数据类,我们需要写“@field:NotBlank”。我认为在您的情况下注释用法是错误的,
@field:NotBlank