2012-07-05 13 views
5

sto voglio usare RedirectAttibutes proprietà che ha messo a punto nella primavera del 3.1, ho il seguente metodo del gestore per la post nel mio controllerRedirectAttributes dando IllegalStateException nella primavera del 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"; 
} 

Ma quando ho presentare il modulo I 'm ricevendo la seguente eccezione:

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) 

mi sono imbattuto in alcuni gotcha con redirectAttributes che non si può utilizzare ModelAndView come tipo di ritorno. Così ho restituito solo la vista stringa.

Qualcuno può pl. dimmi dove sto andando male?

Grazie.

risposta

15

Primavera 3.1 ha introdotto la nuova versione di applicazione di back-end Spring MVC (RequestMappingHandlerMapping/RequestMappingHandlerAdapter) per sostituire quello vecchio (DefaultAnnotationHandlerMapping/AnnotationMethodHandlerAdapter).

Alcune nuove funzionalità di Spring MVC 3.1, ad esempio RedirectAttributes, sono supportate solo dalla nuova implementazione.

Se si utilizza <mvc:annotation-driven> o @EnableWebMvc per abilitare Spring MVC, la nuova implementazione deve essere abilitata per impostazione predefinita. Tuttavia, se si dichiara HandlerMapping e/o HandlerAdapter manualmente o si utilizzano quelli predefiniti, è necessario passare esplicitamente alla nuova implementazione (ad esempio, passando a <mvc:annotation-driven>, se non si interrompe la configurazione).

+1

L'aggiunta di ha risolto il problema !!! Grazie. – tintin

+1

@EnableWebMvc per il controller ha risolto il problema. Dove dovrebbe essere aggiunto "mvc: annotation-driven"? –

Problemi correlati