次のようなリクエスト マッピングがあるとします。
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
そして、このリクエストを次のように呼び出します。
http://example.com/test?i=
エラーメッセージが表示されます
タイプ「java.lang.String」の値をタイプ「int」に変換できませんでした。ネストされた例外は java.lang.NumberFormatException: For input string: ""' です
これを解決するには、javascript クライアントが空のパラメーターを送信するのを停止するか、文字列値を受け入れて、空白ではない場合にのみ解析します。
更新: Spring の以降のバージョンでは、当初の目的の動作が実装されるようになりました。
私はこれをSpring 4.3.5でテストしたところ、動作が実際にはnull値をデフォルト値に変えることがわかったNumberFormatException
. 元のマッピングが正常に機能するようになりました。
この動作の変更が行われたスプリングのバージョンはわかりません。