spring - kotlin 和 @Valid Spring 注解

我有一个实体:

class SomeInfo(
        @NotNull @Pattern(regexp = Constraints.EMAIL_REGEX) var value: String) {
    var id: Long? = null
}

和 Controller 方法:

@RequestMapping(value = "/some-info", method = RequestMethod.POST)
public Id create(@Valid @RequestBody SomeInfo someInfo) {
       ...
    }

@Valid 注释不起作用。

似乎 Spring 需要一个默认的无参数构造函数,而上面的花哨的代码变得像这样丑陋(但可以工作):

class SomeInfo() {

    constructor(value: String) {
            this.value = value
        }

        @NotNull @Pattern(regexp = Constraints.EMAIL_REGEX) 
        lateinit var value: String

        var id: Long? = null
    }

有什么好的做法可以减少冗长吗?

谢谢。

最佳答案

似乎 Spring 需要将这些注释应用于字段。但是 Kotlin 会将这些注解应用于构造函数参数。应用注释时使用 field: 说明符以使其应用于字段。以下代码应该适合您。

class SomeInfo(
    @field:NotNull
    @field:Pattern(regexp = Constraints.EMAIL_REGEX)
    var value: String
) {
    var id: Long? = null
}

https://stackoverflow.com/questions/36515094/

相关文章:

android - "Extension with name ' android ' does no

enums - 如何在 Kotlin 中声明枚举类型的变量?

android - 在 Kotlin 中将接口(interface)作为参数传递

kotlin - 从 java 中调用作为 java 中关键字的 kotlin 函数?

lambda - 在 lambda 中使用 return?

android - 如何通过 kotlin 中的 Intent 传递自定义对象

android - Kotlin 属性访问语法如何适用于 Java 类(即 EditText set

kotlin - 比较字符串 Kotlin

intellij-idea - Kotlin - IntelliJ 项目设置

android - 在 ConstraintLayout 中使用 group 来监听多个 View