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 作为返回类型。所以我只返回了字符串视图。

任何人都可以请。告诉我哪里出错了?

谢谢。

4

1 回答 1

15

Spring 3.1 引入了新版本的 Spring MVC 后端实现 ( RequestMappingHandlerMapping/ RequestMappingHandlerAdapter) 来替换旧版本 ( DefaultAnnotationHandlerMapping/ AnnotationMethodHandlerAdapter)。

Spring MVC 3.1 的一些新特性,例如RedirectAttributes,仅由新实现支持。

如果您使用<mvc:annotation-driven>@EnableWebMvc启用 Spring MVC,则默认情况下应启用新实现。但是,如果您声明HandlerMapping和/或HandlerAdapter手动或使用默认实现,则需要显式切换到新实现(例如,通过切换到<mvc:annotation-driven>,如果它不会破坏您的配置)。

于 2012-07-05T15:45:58.027 回答