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 @Override 42 public String toString() { 43 return "Account [username=" + username + ", password=" + password + ", age=" + age + ", address=" + address 44 + "]"; 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腳本:
<form name="testPojo" method="POST" action="class_requestmapping/testPojo"> username:<input type="text" name="username" /> <br> password:<input type="password" name="password" /> <br> age:<input type="text" name="age" /> <br> address:<br> province:<input type="text" name="address.province" /> <br> city:<input type="text" name="address.city" /> <br> details:<input type="text" name="address.details" /> <br> <input type="submit" value="Submit"> </form> <br>
步驟四:測試
提交表單后,打印結果:
testPojo: account:Account [username=abc123, password=123456, age=28, address=Address [province=zhejiang, city=hangzhou, details=hangzhou huo che zhan]]