2013-10-08 12 views
6

ho scritto seguente controller:come passare parametri di reindirizzare pagina in primavera-MVC

@RequestMapping(value="/logOut", method = RequestMethod.GET) 
    public String logOut(Model model, RedirectAttributes redirectAttributes) { 
     redirectAttributes.addFlashAttribute("message", "success logout"); 
     System.out.println("/logOut"); 
     return "redirect:home.jsp"; 
    } 

Come cambiare il codice che a pagina home.jsp posso scrivere ${message} e vedere "success logout"

+0

Avete un controller mappato per gestire 'home.jsp'? L'attributo flahs è stato aggiunto correttamente. –

+0

è solo la pagina jsp – gstackoverflow

+0

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? –

risposta

8

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.

+0

posso sopra il metodo showHomePage e? – gstackoverflow

+0

Qual è la configurazione di 'view resolver' per la tua app? –

+0

Ho fatto un errore. Voglio evitare il metodo showHomePage. Il mio viewResolver ha la configurazione di consueto: class = "org.springframework.web.servlet.view.InternalResourceViewResolver"> /WEB-INF/pages/ .jsp gstackoverflow

Problemi correlati