5

Spring 3.1で登場したRedirectAttibutesプロパティを使用したいのですが、コントローラーに投稿するための次のハンドラーメソッドがあります

    @RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(@ModelAttribute("admin") Admin admin, BindingResult bindingResult, SessionStatus sessionStatus, RedirectAttributes redirectAttributes) {
    redirectAttributes.addAttribute("admin", admin);
    if (bindingResult.hasErrors()) {
        return REGISTRATION_VIEW;

    }
    sessionStatus.setComplete();
    return "redirect:list";
}

ただし、フォームを送信すると、次の例外が発生します。

java.lang.IllegalStateException: Argument [RedirectAttributes] is of type Model or Map but is not assignable from the actual model. You may need to switch newer MVC infrastructure classes to use this argument.
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:322)

ModelAndViewをリターンタイプとして使用できないredirectAttributesに関するいくつかの落とし穴に遭遇しました。だから私は文字列ビューだけを返しました。

誰でもplできますか。どこが間違っているのか教えてください。

ありがとう。

4

1 に答える 1

15

Spring 3.1では、古いバージョン( / )を置き換えるために新しいバージョンのSpring MVCバックエンド実装(RequestMappingHandlerMapping/ )が導入されました。RequestMappingHandlerAdapterDefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapter

などのSpringMVC3.1の一部の新機能はRedirectAttributes、新しい実装でのみサポートされます。

<mvc:annotation-driven>またはを使用@EnableWebMvcしてSpringMVCを有効にする場合は、新しい実装がデフォルトで有効になっている必要があります。ただし、宣言HandlerMappingおよび/またはHandlerAdapter手動で、またはデフォルトの実装を使用する場合は、新しい実装に明示的に切り替える必要があります(たとえば、<mvc:annotation-driven>構成が壊れない場合は、に切り替えることによって)。

于 2012-07-05T15:45:58.027 に答える