1. 用在方法上
一个控制器可以拥有多个@ModelAttribute方法。同个控制器内的所有这些方法,都会在@RequestMapping方法之前被调用。
1) 方法通过返回值的方式默认地将添加一个属性;
2) 方法接收一个Model对象,然后可以向其中添加任意数量的属性。
2. 用在方法参数上
标注在方法参数上的@ModelAttribute说明了该方法参数的值将由model中取得。如果model中找不到,那么该参数会先被实例化,然后被添加到model中。在model中存在以后,请求中所有名称匹配的参数都会填充到该参数中。
1) 它可能因为@SessionAttributes标注的使用已经存在于model中。
2) 它可能因为在同个控制器中使用了@ModelAttribute方法已经存在于model中。
3) 它可能是由URI模板变量和类型转换中取得的。
4) 它可能是调用了自身的默认构造器被实例化出来的。
网友评论