2011-09-09 11 views
28

Jaki jest właściwy sposób przekazania wniosku wiosną do innego kontrolera?Prośba o przekazanie sprężyny 3.0 do innego kontrolera

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

Wszystko regulatora mają zależności wstrzykiwany przez wiosnę, więc nie można po prostu je utworzyć i nazwać je sam, ale chcę wniosek atrybuty mają być przekazywane do innych kontrolerów.

Odpowiedz

37

Spróbuj zwrócić ciąg znaków zamiast tego, a ciąg jest adresem do przodu.

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

Oto link do docs Spring 3.0.x dla RedirectView, który obejmuje również: naprzód. http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#mvc-redirecting – digitaljoel

+0

Czy można to zrobić bez hardcoding "someUrlA"? –

6

Możesz użyć nazwy widoku, takiej jak "redirect: controllerName" lub "forward: controllerName". Ten drugi przekieruje żądanie do innego kontrolera, a poprzedni poinformuje przeglądarkę, aby przekierowała żądanie do innego adresu URL.

1

Możesz użyć Spring RedirectView, aby wysłać żądanie z jednego kontrolera do innego kontrolera. To będzie domyślnie typu żądanie „GET”

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

Przekierowanie nie jest przekierowywane. przekierowanie wysyła nagłówki z poleceniem przekierowania do klienta i klienta po prostu podążaj za lokalizacją, przekaż dalej deleguj obsługę żądań do innego programu obsługi w ramach tego samego żądania. – msangel

Powiązane problemy