SpringMVC的各種引數繫結方式

2021-08-27 21:38:06 字數 4070 閱讀 4337

[b]1. 基本資料型別(以int為例,其他類似):[/b]

controller**:

表單**:

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

[b]2. 包裝型別(以integer為例,其他類似):[/b]

controller**:

表單**:

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

[b]3. 自定義物件型別:[/b]

model**:

public class user

public void setfirstname(string firstname)

public string getlastname()

public void setlastname(string lastname)

}

controller**:

表單**:

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

[b]4. 自定義復合物件型別:[/b]

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。

[b]5. list繫結:[/b]

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**:

表單**:

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

表單**:

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

[quote]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

[/quote]

[b]6. set繫結:[/b]

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**:

表單**:

基本和list繫結類似。

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

[b]7. map繫結:[/b]

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

model**:

public class user

public void setfirstname(string firstname)

public string getlastname()

public void setlastname(string lastname)

}public class usermapform

public void setusers(mapusers)

}

controller**:

表單**:

列印結果:

[quote]x: aaa - bbb

y: ccc - ddd

z: eee - fff

[/quote]

SpringMVC的各種引數繫結方式

controller 表單中input的name值和controller的引數變數名保持一致,就能完成資料繫結,如果不一致可以使用 requestparam註解。需要注意的是,如果controller方法引數中定義的是基本資料型別,但是從頁面提交過來的資料為null或者 的話,會出現資料轉換的異常。...

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...