2012-07-05 4 views
5

Ich RedirectAttibutes Eigenschaft verwenden möchten, die im Frühling gekommen ist 3.1, ich habe folgende Handler-Methode für die Post in meinem ControllerRedirectAttributes geben Illegal im Frühjahr 3.1

@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"; 
} 

Aber wenn ich senden Sie das Formular I ist die folgende Ausnahme erhalten:

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) 

ich auf ein paar gotcha ist mit redirectAttributes gekommen bin, dass Sie nicht Modeland als Rückgabetyp verwenden können. Also habe ich nur die String-Ansicht zurückgegeben.

Kann jemand pl. Sag mir, wo ich falsch liege?

Danke.

Antwort

15

Frühling 3.1 eine neue Version von Spring MVC Backend-Implementierung eingeführt (RequestMappingHandlerMapping/RequestMappingHandlerAdapter), um die alten zu ersetzen (DefaultAnnotationHandlerMapping/AnnotationMethodHandlerAdapter).

Einige neue Funktionen von Spring MVC 3.1, wie RedirectAttributes, werden nur von der neuen Implementierung unterstützt.

Wenn Sie zum Aktivieren von Spring MVC <mvc:annotation-driven> oder @EnableWebMvc verwenden, sollte die neue Implementierung standardmäßig aktiviert sein. Wenn Sie jedoch HandlerMapping und/oder HandlerAdapter manuell deklarieren oder die Standardwerte verwenden, müssen Sie explizit zur neuen Implementierung wechseln (z. B. indem Sie zu <mvc:annotation-driven> wechseln, wenn die Konfiguration nicht beschädigt wird).

+1

Hinzufügen von löste das Problem !!! Vielen Dank. – tintin

+1

@EnableWebMvc für den Controller löste das Problem. Wo sollte "mvc: annotation-driven" hinzugefügt werden? –