10

このコントローラーメソッドを使用した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 では、この問題はもうありません。

4

2 に答える 2