2012-07-05 9 views
5

me quiero usar RedirectAttibutes propiedad que ha surgido en la primavera de 3,1, tengo el siguiente método de control para el post en mi controlador deRedirectAttributes dando IllegalStateException en la primavera de 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"; 
} 

Pero cuando envíe el formulario I estoy poniendo la siguiente excepción:

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) 

me he encontrado con unos cuantos gotcha con redirectAttributes que no se puede utilizar ModelAndView como el tipo de retorno. Así que devolví solo la vista de cadena.

¿Alguien puede pl. dime dónde me estoy equivocando?

Gracias.

Respuesta

15

Primavera 3.1 introdujo una nueva versión de Spring MVC aplicación backend (RequestMappingHandlerMapping/RequestMappingHandlerAdapter) para sustituir a la antigua (DefaultAnnotationHandlerMapping/AnnotationMethodHandlerAdapter).

Algunas características nuevas de Spring MVC 3.1, como RedirectAttributes, solo son compatibles con la nueva implementación.

Si usa <mvc:annotation-driven> o @EnableWebMvc para habilitar Spring MVC, la nueva implementación debe habilitarse de forma predeterminada. Sin embargo, si declara HandlerMapping y/o HandlerAdapter manualmente o usa los predeterminados, debe cambiar a la nueva implementación explícitamente (por ejemplo, al cambiar a <mvc:annotation-driven>, si no rompe su configuración).

+1

Añadiendo ¡resolvió el problema! Gracias. – tintin

+1

@EnableWebMvc para el controlador resolvió el problema. ¿Dónde debe agregarse "mvc: anotado por la anotación"? –

Cuestiones relacionadas