昨日、新しいSpring 3.1RCをダウンロードして、SpringMVCで導入されたばかりのフラッシュスコープ変数のサポートをテストしました。残念ながら、私はそれを機能させることができませんでした...
spring:formsタグのないいくつかのチェックボックスを含むHTMLフォームがあります。このようなもの:
<form action="/deleteaction" method="post">
<input type="checkbox" name="itemId" value="1" />
<input type="checkbox" name="itemId" value="2" />
<input type="submit" name="delete" value="Delete items" />
</form>
Flashスコープがサポートされる前は、注釈付きコントローラーは次のようになりました。
@RequestMapping(value = "/deleteaction", method = RequestMethod.POST, params={"delete"})
public String deleteItems(@RequestParam(value="itemId", required=false) String itemId[]) {
HttpServletRequest
または、次の代わりに使用することもできます@RequestParam
。
@RequestMapping(value = "/deleteaction", method = RequestMethod.POST, params={"delete"})
public String deleteItems(HttpServletRequest request) {
String itemIds[] = request.getParameterValues("itemId");
どちらの方法も問題なく機能していました。RedirectAttributes
メソッドパラメータにを追加しようとすると、Springは例外をスローします。
@RequestMapping(value = "/deleteaction", method = RequestMethod.POST, params={"delete"})
public String deleteItems(@RequestParam(value="itemId", required=false) String itemId[], RedirectAttributes redirectAttrs) {
ログ:
Oct 16, 2011 11:20:37 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/App] threw
exception [Request processing failed; nested exception is
java.lang.IllegalArgumentException: argument type mismatch] with root cause
java.lang.IllegalArgumentException: argument type mismatch
私は何が間違っているのですか?フラッシュスコープの変数を追加する場所でRedirectAttribuesパラメーターを取得するにはどうすればよいですか?