1. 基本數(shù)據(jù)類型(以int為例,其他類似):
成都創(chuàng)新互聯(lián)公司公司2013年成立,先為木壘哈薩克等服務(wù)建站,木壘哈薩克等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為木壘哈薩克企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
Controller代碼:
@RequestMapping("saysth.do") public void test(int count) { }
表單代碼:
表單中input的name值和Controller的參數(shù)變量名保持一致,就能完成數(shù)據(jù)綁定,如果不一致可以使用@RequestParam注解。需要注意的是,如果Controller方法參數(shù)中定義的是基本數(shù)據(jù)類型,但是從頁(yè)面提交過(guò)來(lái)的數(shù)據(jù)為null或者”"的話,會(huì)出現(xiàn)數(shù)據(jù)轉(zhuǎn)換的異常。
也就是必須保證表單傳遞過(guò)來(lái)的數(shù)據(jù)不能為null或”",所以,在開(kāi)發(fā)過(guò)程中,對(duì)可能為空的數(shù)據(jù),最好將參數(shù)數(shù)據(jù)類型定義成包裝類型,具體參見(jiàn)下面的例子。
2. 包裝類型(以Integer為例,其他類似):
Controller代碼:
@RequestMapping("saysth.do") public void test(Integer count) { }
表單代碼:
和基本數(shù)據(jù)類型基本一樣,不同之處在于,表單傳遞過(guò)來(lái)的數(shù)據(jù)可以為null或”",以上面代碼為例,如果表單中num為”"或者表單中無(wú)num這個(gè)input,那么,Controller方法參數(shù)中的num值則為null。
3. 自定義對(duì)象類型:
Model代碼:
public class User { private String firstName; private String lastName; 省略set,get 方法 }
Controller代碼:
@RequestMapping("saysth.do") public void test(User user) { }
表單代碼:
非常簡(jiǎn)單,只需將對(duì)象的屬性名和input的name值一一匹配即可。
4. 自定義復(fù)合對(duì)象類型:
Model代碼:
public class ContactInfo { private String tel; private String address; 省略set ,get } public class User { private String firstName; private String lastName; private ContactInfo contactInfo; 省略set ,get }
Controller代碼:
@RequestMapping("saysth.do") public void test(User user) { System.out.println(user.getFirstName()); System.out.println(user.getLastName()); System.out.println(user.getContactInfo().getTel()); System.out.println(user.getContactInfo().getAddress()); }
表單代碼:
User對(duì)象中有ContactInfo屬性,Controller中的代碼和第3點(diǎn)說(shuō)的一致,但是,在表單代碼中,需要使用“屬性名(對(duì)象類型的屬性).屬性名”來(lái)命名input的name。
5. List綁定:
List需要綁定在對(duì)象上,而不能直接寫(xiě)在Controller方法的參數(shù)中。
Model代碼:
public class User { private String firstName; private String lastName; 省略set ,get } public class UserListForm { private Listusers; public List getUsers() { return users; } public void setUsers(List users) { this.users = users; } }
Controller代碼:
@RequestMapping("saysth.do") public void test(UserListForm userForm) { for (User user : userForm.getUsers()) { System.out.println(user.getFirstName() + " - " + user.getLastName()); } }
表單代碼: