Перенаправление на другой контроллер в Spring Portlet MVC

У меня есть портлет Spring 3.0 с двумя контроллерами. Контроллер-1 имеет аннотированный метод @RenderMapping по умолчанию, в котором я запускаю некоторую логику, чтобы решить, какое представление отображать, скажем, представление-1 и представление-2.

Атрибуты модели для представления-1 заполняются в контроллере-1, а для представления-2 — в контроллере-2.

Как я могу перенаправить на Controller-2, когда моя логика должна вернуть представление-2, чтобы я мог заполнить атрибуты модели, соответствующие представлению-2.


person Niranjan    schedule 15.05.2013    source источник


Ответы (1)


Вы можете просто вызвать метод в контроллере-2 из контроллера-1.

Псевдокод для метода рендеринга контроллера-1

if(yourCondition){
    return controller-2.renderMethod();
}
populateYourModel
return view;

Хотя вы, наверное, хотите переосмыслить этот кусок логики. Похоже, что запросы каким-то образом отличаются, поэтому в идеале вы должны отправлять их прямо на правильный контроллер.

person Mark Chorley    schedule 22.05.2013
comment
Спасибо за ваш вклад, но то, что я сейчас делаю, это явный вызов populateModel в контроллере-2, который аннотируется @ModelAttribute, когда мое условие выполняется, передавая атрибут Model, а затем возвращая соответствующее представление. Я весьма скептически отношусь к тому, будут ли выполняться @ModelAttribute аннотированные методы, просто выполнив простой вызов renderMethod() в controller-2. Я ищу что-то в Spring, что перенаправляет запрос на другой контроллер, затем выполняет аннотированные методы @ModelAttribute и обрабатывает метод @RenderMappong по умолчанию этого контроллера. - person Niranjan; 23.05.2013