如何为每个页面调用方法?

时间:2013-12-19 08:43:52

标签: spring-mvc

我正在使用Spring MVC编写应用程序。 我有一个从数据库返回值的方法。我想在网站的标题中显示这些值(显示在所有页面上)。我怎么能这样做?

我需要在每个控制器中调用此方法。

2 个答案:

答案 0 :(得分:12)

使用@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类应该位于所有MVC控制器所在的Java命名空间中(以确保Spring可以自动检测它)。

有关@ControllerAdvice@ModelAttribute注释的详细信息,请参阅Spring Reference

答案 1 :(得分:1)

您可以自己编写interceptor