雅加达验证似乎无济于事

Jakarta validation does not seem to do anything

提问人:TakiTamNerd 提问时间:8/31/2023 更新时间:9/2/2023 访问量:63

问:

我使用 Kotlin 和 Spring。我可以使用正常的“if”和异常来验证这些值,但至少在理论上,框架提供了一种验证方法

根据互联网上的文档和帖子,以下内容就足够了:

data class Person(@Min(18) var age: Int, @Size(max=10) val name: String) {
}

和控制器:

@RestController
class PersonController {
    val persons = mutableListOf<Person>()
    @GetMapping
    fun getPeople() = persons

    @PostMapping
    fun sendPerson(@Valid @RequestBody person: Person) {
        persons.add(person)
    }
}

My 包含以下依赖项:build.gradle

implementation 'org.springframework.boot:spring-boot-starter-web'
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
implementation 'org.jetbrains.kotlin:kotlin-reflect'

(版本为 3.1.3)

为什么注释似乎没有做任何事情以及如何修复它?

Spring Kotlin 验证

评论

0赞 Andrei Lisa 8/31/2023
kotlin-data-class-bean-验证
0赞 TakiTamNerd 8/31/2023
很乐意将其标记为正确答案,但这是一个评论,所以我只引用你的话
0赞 Andrei Lisa 8/31/2023
我很乐意帮忙,当我认为这不止一个想法要说时,我会写一个答案。尽情享受吧

答:

1赞 TakiTamNerd 8/31/2023 #1

正如评论所指出的:Kotlin 至少创建了一个字段、一个 getter 和一个带有语法的构造函数参数,因此我们需要准确地告诉我们要验证的内容

TLDR:只需更改为@get:Valid