エンティティがあります:
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
}
言葉を減らすための良い方法はありますか?
ありがとう。
ベストアンサー1
Spring では、これらのアノテーションをフィールドに適用する必要があるようです。ただし、Kotlin では、これらのアノテーションをコンストラクター パラメーターに適用します。field:
アノテーションをフィールドに適用するには、指定子を使用します。次のコードは問題なく動作するはずです。
class SomeInfo(
@field:NotNull
@field:Pattern(regexp = Constraints.EMAIL_REGEX)
var value: String
) {
var id: Long? = null
}