我正在使用Spring MVC编写应用程序。 我有一个从数据库返回值的方法。我想在网站的标题中显示这些值(显示在所有页面上)。我怎么能这样做?
我需要在每个控制器中调用此方法。
答案 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。