组合中的 Spring 验证

标签 spring validation kotlin

我有以下数据类:

data class User (
    @field:NotEmpty
    val firstName: String?
    @field:NotEmpty
    val lastName: String?
)

data class Expert (
    @field:NotEmpty
    val name: String?
    @field:NotNull
    val contact: User?
)

我想使用我的 rest API 端点来创建一个带有 spring 验证的专家:
@RestController
@RequestMapping("/api/experts")
class ExpertController(private val expertService: ExpertService) {

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    fun create(@Valid @RequestBody dto: Expert) = expertService.create(dto)

}

验证在 namecontact字段工作正常。但在 firstName 上进行验证和 lastName字段( User 类)不起作用。这是正常行为吗?我不能对构图使用验证?为什么?或者我错过了什么?

最佳答案

为了User如果它包含在 Expert 中,则进行验证,您需要添加 @Valid给它注释,所以 Spring 的 Validator 知道要继续检查,否则它会停止。

试试这个(未经测试):

data class Expert (
    @field:NotEmpty
    val name: String?

    @field:NotNull
    @field:Valid
    val contact: User?
)

关于组合中的 Spring 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52151903/

相关文章:

php - 无法访问 View 中的验证错误

javascript - 将 html 输入框中的值保持在设定值以下

java - 如何在android上将kotlin转换为java?

spring - 无法连接到运行 Junit 测试的 Redis

java - 识别由于网络问题导致的 SQLException

java - Hibernate:通过从某个位置读取 hbm 映射文件来创建动态表

java - 在没有字段绑定(bind)的情况下使用表单错误?

java - 仅当变量为空时才在 Kotlin 中实例化变量?

kotlin - 如何获得 Kotlin 中两个列表的所有元素的总和?

java - 如何将 Spring OAuth2 Server 集成到 Liferay 中