フォロー

長い 

Javaで成功する理由は暗黙的なコンストラクタのパラメーターの数が0個だから。
Kotlinのdata classで失敗する理由はパラメーターの数が0個のコンストラクタが無いから。
コンストラクタで初期化に失敗するとMethodArgumentNotValidExceptionが発生して処理が中断される。Javaではこれが発生しないのでその後の処理として変数にbinderがバインドしてくれる。よってKotlinのdata classでは失敗する。
そしてコンストラクタでの初期化はbinderではなくModelAttributeMethodProcessor内部での処理なのでbinderで行われている特殊な処理が行えず、webRequest.getParameter(String)でのマッピングしか行われない。webRequest.getParameter(String)でのマッピングは変数名でそのまま取得するだけなので配列のkey[]=valueの形式を取得できず、nullになる。KotlinはコンストラクタでnullチェックをするのでNullPointerExceptionが発生し、結果的にMethodArgumentNotValidExceptionが発生する。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。