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