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