Springの@RequestParamのデフォルト値設定をKotlinで利用する際の注意点

Kotlinに慣れてきたころに引っかかったことの備忘録となります。

状況

Springのリクエストパラメータのbarに、Kotlinのデフォルト引数機能を設定したものの意図したように動作しませんでした。

@GetMapping("/")
fun foo(
   @RequestParam(value="bar") bar: String = "BAR"
) : String {
    println(bar) // 空文字が出力される
}

原因・対応

SpringのリクエストパラメータではKotlinのデフォルト引数機能ではなく、Springの@RequestParamの引数defaultValueを利用する必要がありました。

@GetMapping("/")
fun foo(
   @RequestParam(value="bar", defaultValue = "BAR") bar: String
) : String {
    println(bar) // [BAR]が出力される
}

修正前の状態では、コンパイルエラーや動作時ランタイムエラーとなるわけでもありません。(サンプルでは空文字が出力されるだけ)

そのため意外とこの不具合は捕捉しづらいなあと感じます。注意してください。

 


--------------------------
システム開発のご要望・ご相談はこちらから

コメントを残す

メールアドレスが公開されることはありません。