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代码(所以你没有得到一个错误)。 在这些用例中,这只是无用的。
- Kotlin + Spring Boot请求编组
- 春天的数据mongodb和kotlin
- 无法使用Gradle在IntelliJ Community Edition中添加应用程序服务器
- 我不能在Springboot-Kotlin中排除MongoAutoConfiguration(MongoSocketOpenException)
- Spring数据Elasticsearch与Kotlin数据类的脚本字段导致Jackson序列化问题
- ReactiveCrudRespository永远不会从SaveAll返回
- Spring @Autowire不在Kotlin工作
- 带kotlin功能路由器的非反应性Spring Web
- Angular:如何在表单提交中发布文件到服务器