Spring的@ModelAttribute用法

作者: wiflish 分类: 技术 发布时间: 2014-05-26 17:16 ė 6没有评论

@ModelAttribute有2个用途

1. 注解在方法上

@ModelAttribute
publicAccount addAccount(@RequestParamString number) {
returnaccountManager.findAccount(number);
}
// Add multiple attributes
@ModelAttribute
public voidpopulateModel(@RequestParamString number, Model model) {
model.addAttribute(accountManager.findAccount(number));
// add more …
}

增加@ModelAttribute的方法,该方法会优先于@RequestMapping的方法执行,为@RequestMapping的方法提前准备数据,最常见的使用场景就是 一个表单中有下拉框,下拉框的数据从后台读取的情况,使用这个注解,就不需要在每个@RequestMapping方法中编写查询下拉框数据的代码。 其实有这种使用场景时,也可以使用@SessionAttributes注解,直接将数据放到Session中。

2. 注解在方法参数上

@RequestMapping(value=”/owners/{ownerId}/pets/{petId}/edit”, method = RequestMethod.POST)
publicString processSubmit(@ModelAttribute Pet pet) { }

在方法参数上注解@ModelAttribute,表示该参数可以从以下途径获得值:

a)如果在该方法所属的类上有@SessionAttributes注解,则该参数从session中取值;

b)从model中获得值,如果model没有,则spring会自动初始化并把该参数加入到model;

c)遍历所有的请求参数,如果请求参数名与参数的属性匹配,则将请求参数的值放入参数对象;

d)从URI的restful变量中取值,比如:/owners/{ownerId}/pets/{petId}/edit,pet对象就会取:ownerId和petId的值,并填入pet对象中。

本文出自 Wiflish's Blog,转载时请注明出处及相应链接。

本文永久链接: http://wiflish.fyard.com/archives/201

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ɣ回顶部