1 @ModelAttribute
2 public void addAttributes(Model model) {
3 model.addAttribute("msg", "hello world!");
4 }
在这个例子中,我们展示了一个方法,它将一个msg属性添加到Model中。
通常,在调用方法前,SpringMvc会始终先调用该方法,类似与我们用到的拦截器,过滤器。优先级别在方法中最高。(注意,只在同一个controller时)
1 @ModelAttribute("user1")
2 public void addAttributes(User user) {
3
4 }
在这里,ModelAttribute有了一个user1,然后参数是user,所以在Model中会存在2个对象,user和user1
1 @RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
2 public String submit(@ModelAttribute("employee") Employee employee) {
3
4 return "employeeView";
5 }
参数会中模型中查找,也就是比如我们提交一个form表单时,可以使用这种方法来获取一个对象,比如会先在model中先获取employee的对象,如果获取不到就会先通过反射来实例化,然后从request里面的值来set实例化的对象,然后把这个对象添加到model中
1 @Controller
2 @RequestMapping("user")
3 @SessionAttributes("test")
4 public class TestController {
}
1 @Controller
2 @RequestMapping("user")
3 @SessionAttributes("test")
4 public class TestController {
5
6 @RequestMapping(value = "test1")
7 public String test1(HttpServletRequest request) {
8 request.getSession().setAttribute("test",user);
9
10 }
11
12 @RequestMapping(value = "test2")
13 public String test2(@ModelAttribute("test") User user,SessionStatus sessionStatus) {
14 return null;
15 }
16 }
在这个代码中,会先调用test1再调用test2,因为在test1中设置test,因为使用了@SessionAttributes("test"),会确保test先存在