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]が出力される }
修正前の状態では、コンパイルエラーや動作時ランタイムエラーとなるわけでもありません。(サンプルでは空文字が出力されるだけ)
そのため意外とこの不具合は捕捉しづらいなあと感じます。注意してください。