12.16 POJO 自动封装对象
POJO即自定义类型
如果我们请求参数是一个POJO 那么SpringMVC会自动为这个POJO赋值
首先我们有一个book,里面封装一个自定义的Address(内有city province)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| package com.runsstudio.springmvc.servlet;
public class Book { private String bookName; private String author; private Double price; private Integer stock; private Integer sales; private Address address; public String getBookName() { return bookName; }
public Address getAddress() { return address; }
public void setAddress(Address address) { this.address = address; }
public void setBookName(String bookName) { this.bookName = bookName; }
public String getAuthor() { return author; }
public void setAuthor(String author) { this.author = author; }
public Double getPrice() { return price; }
public void setPrice(Double price) { this.price = price; }
public Integer getStock() { return stock; }
public void setStock(Integer stock) { this.stock = stock; }
public Integer getSales() { return sales; }
public void setSales(Integer sales) { this.sales = sales; }
@Override public String toString() { return "Book{" + "bookName='" + bookName + '\'' + ", author='" + author + '\'' + ", price=" + price + ", stock=" + stock + ", sales=" + sales + ", address=" + address + '}'; }
public Book(String bookName, String author, Double price, Integer stock, Integer sales, Address address) { this.bookName = bookName; this.author = author; this.price = price; this.stock = stock; this.sales = sales; this.address = address; }
public Book() { } }
|
然后我们有一个Controller
1 2 3 4 5 6 7 8 9
| @Controller public class BookController {
@RequestMapping("/book") public String addBook(Book book, Model model){ model.addAttribute("book",book); return "addSuccess"; } }
|
jsp里写个表单
1 2 3 4 5 6 7 8 9
| <form action="${pageContext.request.contextPath}/book" method="post"> 书名<input type="text" name="bookName"><br> 作者<input type="text" name="author"><br> 价格<input type="text" name="price"><br> 库存<input type="text" name="stock"><br> 销量<input type="text" name="sales"><br> 地址:省份<input type="text" name="address.province">城市<input type="text" name="address.city"><br> <input type="submit" value="提交图书"> </form>
|
提交表单
成功返回的页面

注意:参数是区分大小写的 不能写bookname
参数类型如果不对应 比如把Double 输入了个String 会返回400 Bad Request
