次のようなリクエストマッピングがある場合:
@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:入力文字列の場合: "" '
これを解決するには、JavaScriptクライアントが空のパラメータを送信しないようにするか、文字列値を受け入れ、それらが空白でないことが判明した場合にのみ解析します。
更新:春のそれ以降のバージョンでは、本来望ましい動作が実装されています。
私はこれを春の4.3.5でテストしたところ、動作が実際にはnull値をデフォルト値に変換することがわかりましたNumberFormatException
。私の元のマッピングは正常に動作します。
この動作の変更が行われた春のバージョンはわかりません。
String
タイプのamir75に感謝します。user902383、それは正しいですが、整数値の場合、null /空の値には代わりにdefaultValueを使用することをお勧めします。