有点难理解。
修饰方法是表示在该控制器的所有目标方法执行前都执行该modelattribute注解的方法。
修饰参数是表示什么?修饰参数时@modelattributes(value="xxxx") User user 中的value值需要和@modelattribute修改的方法加入的键的值一致。
Controller Code:
package com.tiekui.springmvc.handlers;import java.util.Map;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam;import com.tiekui.springmvc.pojo.Address; import com.tiekui.springmvc.pojo.User; import com.tiekui.springmvc.pojo.UserNew;@Controller public class ModelAttributes {@RequestMapping("testModelAttribute")public String targetMethod(UserNew user){System.out.println("Target method" + user);return "afterModelAttributes";}@ModelAttributepublic void getuser(@RequestParam(value="id") String id,Map<String, UserNew> map) {if ((id != null)) {UserNew user = new UserNew("tiekui","1234","zhoutiekui@huawei.com",30,1, new Address("guangzhou", "zhenzhen"));System.out.println("Get an object" + user);map.put("userNew", user);}} }
Response View:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body>userAge: ${requestScope.userNew.age}</body> </html>
View:
<form action="testModelAttribute"><br>password : <input type="text" name="username" value="tiekui"><br>password : <input type="password" name="password" value="1234"><br>email : <input type="text" name="email" value="zhoutiekui@huawei.com"><br>age : <input type="text" name="age" value="18"><br><input type="hidden" name="id" value="1"><br>Address Province: <input type="text" name="address.province" value="guangzhou"><br>Address City: <input type="text" name="address.city" value="shenzhen"><br><input type="submit" value="Test ModelAttributes"></form>
POJO userNew:
package com.tiekui.springmvc.pojo;public class UserNew {private String username;private String password;private String email;private int age;private Integer id;public UserNew(String username, String password, String email, int age, Integer id, Address address) {super();this.username = username;this.password = password;this.email = email;this.age = age;this.id = id;this.address = address;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}private Address address;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}@Overridepublic String toString() {return "UserNew [username=" + username + ", password=" + password + ", email=" + email + ", age=" + age+ ", id=" + id + ", address=" + address + "]";}}
POJO Address:
package com.tiekui.springmvc.pojo;public class Address {private String province;private String city;public Address() {super();}public Address(String province, String city) {super();this.province = province;this.city = city;}@Overridepublic String toString() {return "Address [province=" + province + ", city=" + city + "]";}public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;} }