kotlin和@Valid Spring注解
我有一个实体:
class SomeInfo( @NotNull @Pattern(regexp = Constraints.EMAIL_REGEX) var value: String) { var id: Long? = null }
和控制器方法:
@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 }
作为米哈尔答案的替代方法,注释吸气剂也是有效的。
class SomeInfo( @get:NotNull @get:Pattern(regexp = Constraints.EMAIL_REGEX) var value: String ) { var id: Long? = null }
烦人的部分是,不使用@get:或@field:将注释构造函数参数。 这仍然是有效的kotlin代码(所以你没有得到一个错误)。 在这些用例中,这只是无用的。
- 如何判断我的Spring启动应用程序是否处于调试模式?
- 为什么@Primary有时候不适用于Kotlin类?
- 异常处理程序不能使用`spring-boot-starter-data-rest`
- Spring MVC错误404错误的请求Kotlin
- Spring数据Elasticsearch与Kotlin数据类的脚本字段导致Jackson序列化问题
- Spring框架吞下自定义转换器的异常
- Spring Data JPA + Guice错误:使用@EnableTransactionManagement注解时,没有类型的主要bean定义
- 在Kotlin函数中使用@Qualifier
- Spring的Facebook模板映射fetchObject到PagedList