弹簧验证器被忽略



我有一个定义如下的函数:

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>

我甚至尝试添加了一大堆其他验证器,所有这些验证器都得到了相同的结果,即字段总是通过验证,尽管传递了一个空字符串。

// Also passes then given ""
@NotBlank(message = "Name is mandatory.")
@NotNull
@NotEmpty
@Size(min = 1)
val field: String,

事实证明,对于Kotlin,我们需要对每个"Java";带有@field的约束。例如:

@field:NotBlank

用Kotlin编写的自定义验证器不需要这个。

相关内容

  • 没有找到相关文章

最新更新