- 在@ControllerAdvice注解的类方法中使用@ModelAttribute 注解可以用于全局数据绑定功能,可以用来做一些初始化的数据操作,我们可以将一些公共的数据定义在添加了 @ControllerAdvice 注解的类中,这样,在每一个 Controller 的接口中,就都能够访问导出这些数据。
- 使用 @ModelAttribute 注解标记该方法的返回数据是一个全局数据,默认情况下,这个全局数据的 key 就是返回的变量名,value 就是方法返回值,当然也可以通过 @ModelAttribute 注解的 name 属性去重新指定 key。
示例
- MyGlobalExceptionHandler.java
@ControllerAdvice
public class MyGlobalExceptionHandler{
@ModelAttribute(name = "data")
public Map<String,Object> mydata(){
HashMap<String, Object> map
= new HashMap<>();
map.put("age", 99);
map.put("gender", "男");
return map;
}
}
- HelloController.java
@RestController
public class HelloController{
@GetMapping("/hello")
public String hello(Model model){
//定义完成后,在任何一个Controller 的接口中,都可以获取到这里定义的数据
Map<String, Object> map =
model.asMap();
System.out.println(map);
return"hello controller advice";
}
}