このコントローラーメソッドを使用したSpring MVCアプリケーションがあります。
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addNumber(@RequestParam(value="number", required=false) Long number) {
...
return "redirect:/showAll/";
}
私の JSP には、「number」という名前の値を上記のコントローラ メソッドに送信する標準の HTML フォームがあります。ただし、値を省略して (テキスト フィールドに何も入力しないで)、データをコントローラーに POST すると、コントローラー メソッドが呼び出される前にブラウザーが表示されます。
HTTP Status 400 - Required Long parameter 'number' is not present
ただし、コントローラー メソッドの注釈では、"number" パラメーターが必須ではないと明確に定義されています。
何が起こっているのか、少しでもわかる人はいますか?
ありがとうございました。
PS: スローされている例外は次のとおりです。
org.springframework.web.bind.MissingServletRequestParameterException: Required Long parameter 'number' is not present
編集: これは Spring 3.2.3.RELEASE バグです (こちらを参照)。バージョン 3.1.4.RELEASE では、この問題はもうありません。