在SpringMVC3.0.5中验证通过。
在编写Controller时,经常需要在真正进入请求处理方法前准备一下数据,用于请求处理货视图渲染。从Spring2.5后,可以将任何一个拥有返回值的方法标注上@modelAttribute()属性,使其返回值都将进入到模型对象的属性列表中。
@Controller @RequestMapping(value="/test1") @SessionAttributes("curruser") public class MyController { @ModelAttribute("items")//<——①向模型对象中添加一个名为items的属性 public List<String> populateItems() { System.out.println("----------populateItems-----------"); List<String> lists = new ArrayList<String>(); lists.add("item1"); lists.add("item2"); returnlists; } @RequestMapping("/object") public String objectHandler(inttopicId,User user, ModelMapmodelMap) {
System.out.println("model.items:" +((List<String>)modelMap.get("items")).size()); return"result1"; }
}
|
populateItems()函数执行时机:在所有interceptor的preHandler调用之后,在任何请求处理方法调用之前。
数据注入:populateItems()函数返回的数据都将以items为名称放入到隐含的模型对象属性列表中。类似于执行了modelMap.addAttribute(“items”,lists)的操作。
获取数据方法:当执行请求处理方法时,可以通过modelMap.get(“items”)方法获得该数据。