@ModelAttribute用法
@ModelAttribute注解如果用在方法上,则用于设置参数,他会在执行处理前将参数设置到Model中。规则如下:
1)、ModelAttribute设置了value属性,则将其value作为参数名,返回值作为参数值设置到Model中
@ModelAttribute("model1")//设置了value属性为model1
public String setModel1(){
return "v_1";
}
2)、如果方法含有Model、Map、ModelMap类型的参数,则可以直接将参数设置上去
@ModelAttribute("model3")
public void setModel3(Model model){
model.addAttribute("model3","v3");
}
3)、如果既没有设置value,也没有设置Model等参数,则根据返回值类型解析出参数名,返回值作为参数值设置到Model中
@ModelAttribute
public String setModel2(){
return "v2";
}
获取:
@RequestMapping("/testModelAttribute")
public String testModelAttribute(Model model){
Map datas = model.asMap();
datas.get("model1");
System.out.println(datas.get("model1"));//v1
System.out.println(datas.get("string"));//v2
System.out.println(datas.get("model3"));//v3
return "testModelAttribute";
}
如果要针对某些controller生效,可结合@ModelAttribute与@ControllerAdvice使用