以下の内容はhttps://blog.beatdjam.com/entry/2018/08/06/190000より取得しました。


【Kotlin】KotlinでJava EEのBean Validationを使うときの注意点

Kotlinの場合のBean Validationのアノテーションの書き方

Kotlinでdata classをbean paramとして利用してBean validationを行う際、
下記のように書くと正しくvalidationされない。

  • パラメータが欠けると500エラーで死ぬ (?=fuga?hoge= など)
data class Test(
  @QueryParam("hoge")
  @NotNull
  val hoge: String?
)

これは、アノテーションがコンストラクタに付与されたとみなされており、
フィールド自体がvalidationされていないことが原因。
なので、明示的に@field:(または@get:)等をつけて、
Bean validationを利用できるようにする必要がある。

  • こっちだとOK
data class Test(
  @QueryParam("hoge")
  @field:NotNull
  val hoge: String?
)

参考 : KotlinでJSR303(Bean Validation)を使うときの注意 - mike-neckのブログ

@NotNullを付与したパラメータもNullableで受ける

アノテーションで@NotNullをつけている場合でも、
フィールドの型はNullableにする必要がある。
* これはNG

data class Test(
  @QueryParam("hoge")
  @field:NotNull
  val hoge: String
)
  • これはOK
data class Test(
  @QueryParam("hoge")
  @field:NotNull
  val hoge: String?
)

これは、一度パラメータを受け取ってフィールドに格納したあと検証するためで、
フィールドの方をNon Null型にしてしまうと、そもそも変数に格納できずエラーとなってしまう。




以上の内容はhttps://blog.beatdjam.com/entry/2018/08/06/190000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14