当使用@ModelAttribute修饰方法形参,这意味着该参数值会自动绑定成Model属性
归纳一下,SpringMVC可以从下面三个地方获取参数值:
- 同名请求参数
- 同名的路径变量名
- 同名的model属性
栗子:
用户请求url:
/my?name=lyx&age=22"
/test/2
控制器:
@Controller
public class UserController
{
@GetMapping("/my")
//从同名的请求参数中获取方法参数
//在这里@ModelAttribute同时充当了没有指定value的@RequestParam的功能和model.addAttribute的功能
public String test1(@ModelAttribute("myUser") User u,Model model)
{
System.out.println("-------------------------------"+model.asMap());
return "test";
}
//从同名的路径变量中获取方法参数
//在这里@ModelAttribute同时充当了指定了value的@PathValiable的功能和model.addAttribute的功能
@GetMapping("/test/{info}")
public String test2(@ModelAttribute("info") Integer number,Model model)
{
System.out.println("-------------------------------"+model.asMap());
return "test2";
}
}
User.java
public class User
{
private String name;
private Integer age;
//省略setter、getter方法以及构造器
}
test.jsp的输出:
myUser:${myUser}
结果:
myUser:User{name=‘lyx’, age=22}
test2.jsp的输出:
info:${info}
结果:
info:2