我有一个实体:
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/