@ModelAttribute可以用于注解方法和參數(shù)。
@ModelAttribute可以用于注解方法和參數(shù)屿岂。
1乎澄、注解Controller中的方法時(shí),返回的參數(shù)是一個(gè)屬性值螃宙,@ModelAttribute注解的方法在Controller中每個(gè)URL處理方法調(diào)用之前蛮瞄,都會(huì)按照先后順序執(zhí)行。
2谆扎、注解Controller方法的參數(shù)挂捅,用于從model、Form表單或者URL請(qǐng)求參數(shù)中獲取屬性值堂湖。
例子如下闲先,已在Spring3.0中驗(yàn)證通過。
@Controller
public class TestAction {
/---------------------@ModelAttribute注解一個(gè)方法---------------------/
/方法返回值為:void无蜂,沒有什么意義/
@ModelAttribute
public void populateModel(ModelMap model) {
System.out.println("---populateModel---");
model.addAttribute("attributeName", "111");
}
/不指定指定屬性名稱伺糠,方法返回一個(gè)對(duì)象,相當(dāng)于model.addAttribute("user", user)/
@ModelAttribute
public User addUser() {
System.out.println("---addUser---");
User user = new User();
user.setId(1);
user.setUsername("alan");
user.setPassword("1234");
return user;
}
/指定屬性名稱斥季,方法返回一個(gè)字符串训桶,相當(dāng)于model.addAttribute("string1-key", "string1-value")/
@ModelAttribute("string1-key")
public String addString() {
System.out.println("---addString---");
return "string1-value";
}
/返回一個(gè)model屬性累驮,而不是視圖名稱/
@RequestMapping(value = "helloWorld1")
@ModelAttribute("attributeName")
public String helloWorld1() {
System.out.println("---helloWorld1---");
return "hi";
}
/---------------------@ModelAttribute注解方法的參數(shù)---------------------/
/從模型中獲取一個(gè)屬性值,將其轉(zhuǎn)換到對(duì)應(yīng)類型的變量中/
@RequestMapping(value = "helloWorld")
public String helloWorld(@ModelAttribute("user") User user,
@ModelAttribute("attributeName") String aName,
@ModelAttribute("string1-value") String svalue) {
System.out.println("---helloWorld---"+user.getUsername()+", "+user.getPassword());
System.out.println("aName="+aName+", svalue="+svalue);
return "helloWorld";
}
/*從Form表單或者URL參數(shù)中獲取屬性參數(shù)值舵揭,放到對(duì)應(yīng)類型的參數(shù)中谤专,注意:此時(shí)表單中的組件名和參數(shù)屬性名稱一致,如User對(duì)象有兩個(gè)屬性午绳,分別為username,password置侍,則表單中input的名稱必須為username,password,才能實(shí)現(xiàn)屬性值注入拦焚。
- 注意這個(gè)User類必須要有無(wú)參數(shù)的構(gòu)造函數(shù)或者是setter方法
- 此時(shí)@ModelAttribute可以不用顯式寫*/
@RequestMapping(value = "helloWorld2")
public String helloWorld2(@ModelAttribute("user") User user) {
System.out.println("---helloWorld---"+user.getUsername()+", "+user.getPassword());
return "helloWorld";
}
}