被@ModelAttribute注释的方法会在此controller每个方法执行前被执行
(1)@ModelAttribute注释void返回值的方法,通常会传入Model对象作为参数
@ModelAttribute
public void fillData(Model model) {
System.out.println(model);
model.addAttribute("username", "用户名");
}
(2)@ModelAttribute注释有返回值的方法,返回值回被放入model对象中,value就是model对象的属性名,返回值就是model对象的属性值
@ModelAttribute等价于 model.addAttribute(“属性名”, 属性值),主要的作用是将数据添加到Model对象中
@RequestMapping
@RestController
public class TestController {
@PostMapping("/test")
public String test(@ModelAttribute("key") String str, Model model) {
return str;
}
@ModelAttribute(value = "key")
public String fillData1() {
return "modelAttribute";
}
}
@ModelAttribute注解如果没有指定name属性【实际是没有指定model对象的属性名】,那么方法的返回值类型的首字母小写就是model对象的属性名,方法返回值就是model对象的属性值
@RequestMapping
@RestController
public class TestController {
@PostMapping("/test")
public String test(@ModelAttribute("string") String str, Model model) {
return str;
}
@ModelAttribute
public String fillData1() {
return "modelAttribute";
}
}
(3)@ModelAttribute注释一个方法的参数:按@ModelAttribute指定的名称将model对象属性值取出来赋值给参数