2013-12-19 2 views
3

Я пишу приложение, используя Spring MVC. У меня есть метод, который возвращает значения из базы данных. И я хочу отображать эти значения в заголовке сайта (который отображается на всех страницах). Как я могу это сделать?Как вызвать метод для каждой страницы?

Мне нужно вызвать этот метод в каждом контроллере.

ответ

10

Объявление об объявлении @ControllerAdvice аннотация, затем объявляйте способ с аннотацией @ModelAttribute. Например:

@ControllerAdvice 
public class GlobalControllerAdvice { 

    @ModelAttribute 
    public void myMethod(Model model) { 

    Object myValues = // obtain your data from DB here... 

    model.addAttribute("myDbValues", myValues); 
    } 
} 

Spring MVC будет вызывать этот метод перед каждым методом в каждом контроллере MVC. Вы сможете использовать атрибут myDbValues на всех страницах.

Класс @ControllerAdvice должен находиться в том же пространстве имен Java, где все ваши контроллеры MVC (чтобы убедиться, что Spring может автоматически обнаружить его).

См. Spring Reference для получения дополнительной информации о @ControllerAdvice и @ModelAttribute аннотации.

+0

Алексей, это работает для меня. Большое спасибо. – Mufanu

1

Вы можете написать собственный interceptor.

+0

Благодарим вас за ответ. – Mufanu

Смежные вопросы