Spring MVC会按照请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值,支持级联属性。
如:address.city.dept.address.province等。
步骤一:定义Account.java,Address.java类:
1 package com.dx.springlearn.entities; 2 3 public class Account { 4 private String username; 5 private String password; 6 private Integer age; 7 private Address address; 8 9 public String getUsername() {10 return username;11 }12 13 public void setUsername(String username) {14 this.username = username;15 }16 17 public String getPassword() {18 return password;19 }20 21 public void setPassword(String password) {22 this.password = password;23 }24 25 public Integer getAge() {26 return age;27 }28 29 public void setAge(Integer age) {30 this.age = age;31 }32 33 public Address getAddress() {34 return address;35 }36 37 public void setAddress(Address address) {38 this.address = address;39 }40 41 @Override42 public String toString() {43 return "Account [username=" + username + ", password=" + password + ", age=" + age + ", address=" + address44 + "]";45 }46 47 }
package com.dx.springlearn.entities;public class Address { private String province; private String city; private String details; 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; } public String getDetails() { return details; } public void setDetails(String details) { this.details = details; } @Override public String toString() { return "Address [province=" + province + ", city=" + city + ", details=" + details + "]"; }}
步骤二:在HelloWord.java控制类内添加testPojo方法:
package com.dx.springlearn.handlers;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.CookieValue;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestHeader;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import com.dx.springlearn.entities.Account;@Controller@RequestMapping("class_requestmapping")public class HelloWord { private static String SUCCESS = "success"; @RequestMapping("/testPojo") public String testPojo(Account account) { System.out.println("testPojo: account:" + account); return SUCCESS; }}
步骤三:在index.jsp中添加表单提交html脚本:
步骤四:测试
提交表单后,打印结果:
testPojo: account:Account [username=abc123, password=123456, age=28, address=Address [province=zhejiang, city=hangzhou, details=hangzhou huo che zhan]]