2011-09-09 11 views
28

Qual è il modo corretto di inoltrare una richiesta in primavera a un controller diverso?Richiesta di inoltro Spring 3.0 a controller diversi

@RequestMapping({"/someurl"}) 
public ModelAndView execute(Model model) { 
    if (someCondition) { 
     //forward to controller A 
    } else { 
     //forward to controller B 
    } 
} 

Tutto il regolatore hanno dipendenze iniettati entro la primavera, quindi non si può semplicemente creare loro e definirmi, ma voglio la richiesta attributi da trasmettere agli altri controller.

risposta

37

Provare a restituire una stringa e la stringa è l'URL di inoltro.

@RequestMapping({"/someurl"}) 
public String execute(Model model) { 
    if (someCondition) { 
     return "forward:/someUrlA"; 
    } else { 
     return "forward:/someUrlB"; 
    } 
} 
+2

Ecco un link per la documentazione per 3.0.x Primavera RedirectView, che copre anche: in avanti. http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#mvc-redirecting – digitaljoel

+0

È possibile farlo senza hardcoding "someUrlA"? –

6

È possibile utilizzare il nome della vista come "redirect: controllerName" o "forward: controllerName". Quest'ultimo reindirizzerà la richiesta a un altro controller e il precedente dirà al browser di reindirizzare la richiesta a un altro URL.

1

È possibile utilizzare la primavera RedirectView per inviare la richiesta da un controller all'altro controller. Sarà di default Tipo di richiesta "GET"

RedirectView redirectView = new RedirectView("/controllerRequestMapping/methodmapping.do", true); 
+4

Il reindirizzamento non è inoltrato. reindirizza le intestazioni con il comando di reindirizzamento a client e client, basta seguire la posizione, inoltrare solo delegare la gestione delle richieste all'altro gestore all'interno della stessa richiesta. – msangel

Problemi correlati