Spring 3.0 переадресация запроса на другой контроллер - PullRequest
28 голосов
/ 09 сентября 2011

Как правильно перенаправить запрос весной на другой контроллер?

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

Все контроллеры имеют зависимости, введенные Spring, поэтому я не могу просто создать их и вызвать их самостоятельно, но я хочу, чтобы атрибуты запроса передавались другим контроллерам.

Ответы [ 3 ]

37 голосов
/ 09 сентября 2011

Попробуйте вернуть строку вместо String, являющейся прямым URL.

@RequestMapping({"/someurl"})
public String execute(Model model) {
    if (someCondition) {
        return "forward:/someUrlA";
    } else {
        return "forward:/someUrlB";
    }
}
6 голосов
/ 09 сентября 2011

Вы можете использовать имя представления, например «redirect: controllerName» или «forward: controllerName». Последний перенаправит запрос другому контроллеру, а первый скажет браузеру перенаправить запрос на другой URL.

документы: https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#mvc-redirecting-redirect-prefix

1 голос
/ 16 сентября 2013

Вы можете использовать Spring RedirectView для отправки запроса с одного контроллера на другой контроллер.По умолчанию это будет тип запроса "GET"

RedirectView redirectView = new RedirectView("/controllerRequestMapping/methodmapping.do", true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...