真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

springmvc前臺(tái)向后臺(tái)傳值幾種方式總結(jié)(從簡(jiǎn)單到復(fù)雜)

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 List users;

 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());
 }
}

表單代碼:

其實(shí),這和第4點(diǎn)User對(duì)象中的contantInfo數(shù)據(jù)的綁定有點(diǎn)類似,但是這里的UserListForm對(duì)象里面的屬性被定義成List,而不是普通自定義對(duì)象。

所以,在表單中需要指定List的下標(biāo)。值得一提的是,spring會(huì)創(chuàng)建一個(gè)以最大下標(biāo)值為size的List對(duì)象,所以,如果表單中有動(dòng)態(tài)添加行、刪除行的情況,就需要特別注意,譬如一個(gè)表格,用戶在使用過(guò)程中經(jīng)過(guò)多次刪除行、增加行的操作之后,下標(biāo)值就會(huì)與實(shí)際大小不一致,

這時(shí)候,List中的對(duì)象,只有在表單中對(duì)應(yīng)有下標(biāo)的那些才會(huì)有值,否則會(huì)為null,看個(gè)例子:

表單代碼:

這個(gè)時(shí)候,Controller中的userForm.getUsers()獲取到List的size為21,而且這21個(gè)User對(duì)象都不會(huì)為null,但是,第2到第19的User對(duì)象中的firstName和lastName都為null。打印結(jié)果:

aaa - bbb
ccc - ddd
null - null
null - null
.....
null - null 
eee - fff

6. Set綁定:

Set和List類似,也需要綁定在對(duì)象上,而不能直接寫(xiě)在Controller方法的參數(shù)中。但是,綁定Set數(shù)據(jù)時(shí),必須先在Set對(duì)象中add相應(yīng)的數(shù)量的模型對(duì)象。

Model代碼:

public class User {
 private String firstName;
 private String lastName;
省略set ,get 

}

public class UserSetForm {
 private Set users = new HashSet();

 public UserSetForm() {
  users.add(new User());
  users.add(new User());
  users.add(new User());
 }

 public Set getUsers() {
  return users;
 }

 public void setUsers(Set users) {
  this.users = users;
 }

}

Controller代碼:

@RequestMapping("saysth.do")
public void test(UserSetForm userForm) {
 for (User user : userForm.getUsers()) {
  System.out.println(user.getFirstName() + " - " + user.getLastName());
 }
}

表單代碼:

基本和List綁定類似。

需要特別提醒的是,如果最大下標(biāo)值大于Set的size,則會(huì)拋出org.springframework.beans.InvalidPropertyException異常。所以,在使用時(shí)有些不便。

7. Map綁定:

Map最為靈活,它也需要綁定在對(duì)象上,而不能直接寫(xiě)在Controller方法的參數(shù)中。

Model代碼:

public class User {
 private String firstName;
 private String lastName;
省略set ,get 

}

public class UserMapForm {
 private Map users;

 public Map getUsers() {
  return users;
 }

 public void setUsers(Map users) {
  this.users = users;
 }

}

Controller代碼:

@RequestMapping("saysth.do")
public void test(UserMapForm userForm) {
 for (Map.Entry entry : userForm.getUsers().entrySet()) {
  System.out.println(entry.getKey() + ": " + entry.getValue().getFirstName() + " - " +
  entry.getValue().getLastName());
 }
}

表單代碼:

以上這篇springmvc前臺(tái)向后臺(tái)傳值幾種方式總結(jié)(從簡(jiǎn)單到復(fù)雜)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。


文章名稱:springmvc前臺(tái)向后臺(tái)傳值幾種方式總結(jié)(從簡(jiǎn)單到復(fù)雜)
網(wǎng)站URL:http://weahome.cn/article/jddcpp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部