SpringMVC(十七-二十) ModelAttribute 注解
有点难理解。
修饰方法是表示在该控制器的所有目标方法执行前都执行该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"; } @ModelAttribute public 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; } @Override public 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; } @Override public 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; } }

浙公网安备 33010602011771号