spring - kotlin 和 @Valid Spring 注解

标签 spring spring-mvc kotlin

我有一个实体:

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
}

关于spring - kotlin 和 @Valid Spring 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36515094/

相关文章:

Spring缓存抽象

java - Spring Data 网页分页 "page"参数不起作用

java - 独立 Tomcat 中的 Spring Boot 会忽略 DeferredResults 中设置的异常

java.math.BigDecimal 除法不准确

android - 为什么 FileProvider 不能与 Broadcast 一起使用?

android - ViewModelProviders 无法在我的 fragment 中工作

java - ScheduledExecutorService 在我的 junit 测试期间不起作用

java - Jersey 网络服务器中的 Spring 注入(inject)错误

java - Controller 使用 void 方法返回 404 页面

java-Spring MVC : Redirect requests with old URLs to new URLs