SpringMVC的各種引數繫結方式

2021-07-03 17:53:50 字數 3450 閱讀 5285

controller**:

表單中input的name值和controller的引數變數名保持一致,就能完成資料繫結,如果不一致可以使用@requestparam註解。需要注意的是,如果controller方法引數中定義的是基本資料型別,但是從頁面提交過來的資料為null或者」」的話,會出現資料轉換的異常。也就是必須保證表單傳遞過來的資料不能為null或」」,所以,在開發過程中,對可能為空的資料,最好將引數資料型別定義成包裝型別,具體參見下面的例子。

controller**:

和基本資料型別基本一樣,不同之處在於,表單傳遞過來的資料可以為null或」」,以上面**為例,如果表單中num為」」或者表單中無num這個input,那麼,controller方法引數中的num值則為null。

model**:

複製**

public class user

public void setfirstname(string firstname)

public string getlastname()

public void setlastname(string lastname) }

複製**

controller**:

非常簡單,只需將物件的屬性名和input的name值一一匹配即可。

model**:

複製**

public class contactinfo

public void settel(string tel)

public string getaddress()

public void setaddress(string address) public class user

public void setfirstname(string firstname)

public string getlastname()

public void setlastname(string lastname)

public contactinfo getcontactinfo()

public void setcontactinfo(contactinfo contactinfo) }

複製**

controller**:

複製**

複製**

user物件中有contactinfo屬性,controller中的**和第3點說的一致,但是,在表單**中,需要使用「屬性名(物件型別的屬性).屬性名」來命名input的name。

list需要繫結在物件上,而不能直接寫在controller方法的引數中。

model**:

複製**

public class user

public void setfirstname(string firstname)

public string getlastname()

public void setlastname(string lastname) public class userlistform

public void setusers(listusers) }

複製**

controller**:

複製**

first name

last name

複製**

其實,這和第4點user物件中的contantinfo資料的繫結有點類似,但是這裡的userlistform物件裡面的屬性被定義成list,而不是普通自定義物件。所以,在表單中需要指定list的下標。值得一提的是,spring會建立乙個以最大下標值為size的list物件,所以,如果表單中有動態新增行、刪除行的情況,就需要特別注意,譬如乙個**,使用者在使用過程中經過多次刪除行、增加行的操作之後,下標值就會與實際大小不一致,這時候,list中的物件,只有在表單中對應有下標的那些才會有值,否則會為null,看個例子:

表單**:

複製**

first name

last name

複製**

這個時候,controller中的userform.getusers()獲取到list的size為21,而且這21個user物件都不會為null,但是,第2到第19的user物件中的firstname和lastname都為null。列印結果:

複製**

aaa - bbb

ccc - ddd

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

null - null

eee - fff

複製**

set繫結:

set和list類似,也需要繫結在物件上,而不能直接寫在controller方法的引數中。但是,繫結set資料時,必須先在set物件中add相應的數量的模型物件。

model**:

複製**

public class user

public void setfirstname(string firstname)

public string getlastname()

public void setlastname(string lastname) public class usersetform

public setgetusers()

public void setusers(setusers) }

複製**

controller**:

複製**

first name

last name

複製**

基本和list繫結類似。

需要特別提醒的是,如果最大下標值大於set的size,則會丟擲org.springframework.beans.invalidpropertyexception異常。所以,在使用時有些不便。

map最為靈活,它也需要繫結在物件上,而不能直接寫在controller方法的引數中。

model**:

複製**

public class user

public void setfirstname(string firstname)

public string getlastname()

public void setlastname(string lastname) public class usermapform {

private map

SpringMVC的各種引數繫結方式

b 1.基本資料型別 以int為例,其他類似 b controller 表單 表單中input的name值和controller的引數變數名保持一致,就能完成資料繫結,如果不一致可以使用 requestparam註解。需要注意的是,如果controller方法引數中定義的是基本資料型別,但是從頁面提...

Spring MVC的引數封裝

關於list和陣列的引數封裝 如果提交的數格式是 ids 1 ids 2 ids jquery在提交的時候 ajax 或者data data list,datatype json type post traditional true success function responsejson 以上d...

springmvc的引數繫結

對於前端傳送的資料。我們如何接收呢?在傳統的servlet開發中使用httprequest.getp 方法來獲取,但是在springmvc中,我們將極大簡化這一任務,對於基本型別。我們只需要在請求處理方法中加入引數,與前端輸入的引數一致即可。public string zeze integer id...