Quando il valore restituito contiene il prefisso redirect:
, lo viewResolver
riconosce questo come un'indicazione speciale che è necessario un reindirizzamento. Il resto del nome della vista verrà considerato come l'URL di reindirizzamento. E il client invierà una nuova richiesta a questo redirect URL
. Quindi è necessario disporre di un metodo handler associato a questo URL per elaborare la richiesta di reindirizzamento.
È possibile scrivere un metodo del gestore come questo per gestire la richiesta di reindirizzamento:
@RequestMapping(value="/home", method = RequestMethod.GET)
public String showHomePage() {
return "home";
}
E si può riscrivere il metodo logOut
gestore come questo:
@RequestMapping(value="/logOut", method = RequestMethod.POST)
public String logOut(Model model, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("message", "success logout");
System.out.println("/logOut");
return "redirect:/home";
}
EDIT:
È possibile evitare il metodo showHomePage
con questa voce nel file di configurazione dell'applicazione:
<beans xmlns:mvc="http://www.springframework.org/schema/mvc"
.....
xsi:schemaLocation="...
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
....>
<mvc:view-controller path="/home" view-name="home" />
....
</beans>
Questo inoltrerà la richiesta di /home
ad una vista chiamata home
. Questo approccio è adatto se non esiste una logica del controller Java da eseguire prima che la vista generi la risposta.
fonte
2013-10-08 14:21:40
Avete un controller mappato per gestire 'home.jsp'? L'attributo flahs è stato aggiunto correttamente. –
è solo la pagina jsp – gstackoverflow
Un 'redirect' invia una risposta 302 al client con un'intestazione' Location'. Nel tuo caso quel 'Location' sarà qualche url a' home.jsp'. Devi avere un gestore per questo. Fai? –