Spring 3.0 запрос пересылки на другой контроллер
Каков правильный способ перенаправления запроса в spring на другой контроллер?
@RequestMapping({"/someurl"})
public ModelAndView execute(Model model) {
if (someCondition) {
//forward to controller A
} else {
//forward to controller B
}
}
Все контроллеры имеют зависимости, введенные Spring, поэтому я не могу просто создать их и сам вызвать их, но я хочу, чтобы атрибуты запроса передавались другим контроллерам.
Ответы
Ответ 1
Попробуйте вместо этого вернуть String, а String - прямой URL.
@RequestMapping({"/someurl"})
public String execute(Model model) {
if (someCondition) {
return "forward:/someUrlA";
} else {
return "forward:/someUrlB";
}
}
Ответ 2
Вы можете использовать имя вида, например, "redirect: имя_контроллера" или "forward: имя_контроллера". Последний будет перенаправлять запрос другому контроллеру, а первый будет указывать браузеру перенаправить запрос на другой URL.
Ответ 3
Вы можете использовать Spring RedirectView
для отправки запроса от одного контроллера к другому контроллеру.
Это будет по умолчанию Тип запроса "GET"
RedirectView redirectView = new RedirectView("/controllerRequestMapping/methodmapping.do", true);