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


问题内容

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

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


问题答案:

声明带有@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