Лучший способ выполнить повторяющийся код контроллера Spring? - PullRequest
5 голосов
/ 18 мая 2011

У меня есть метод библиотеки Common.addTheUsualStuffToTheModel(model), который должен добавлять различные атрибуты к модели в каждом методе контроллера в моем приложении .

@RequestMapping(value = "/everypath", method = RequestMethod.GET)
public final String everyHandler(ModelMap model)
{
    model = Common.addTheUsualStuffToTheModel(model);
    return "everyPage";
}

Пока я добавляю этоодна и та же строка для каждого метода обработчика:

    model = Common.addTheUsualStuffToTheModel(model);

Но я боюсь, что это не согласуется с принципом «пиши один раз, используй везде».

Как избежать повторения этого кодав каждом обработчике?

Ответы [ 2 ]

7 голосов
/ 18 мая 2011

Вы можете использовать перехватчик и <mvc:interceptors>, чтобы сделать это

В вашем перехватчике вы можете добавить что угодно в качестве атрибута запроса (что фактически является атрибутом модели). Код перехватчика выполняется до или после каждого метода (который соответствует отображению перехватчика).

Если вам необязательно заполнять модель до метода контроллера, в методе postHandle вы получите объект ModelAndView.

0 голосов
/ 18 мая 2011

Как насчет указания аннотированных методов поставщика справочных данных @ModelAttribute. Если у вас был базовый класс для всех ваших контроллеров, и у этого базового класса были аннотированные методы @ModelAttribute, то я считаю, что данные будут доступны в модели для всех представлений, обрабатываемых этими контроллерами. Взгляните на 15.3.2.8 в Spring docs .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...