SpringBoot后端接收數(shù)組對象的實現(xiàn)
SpringBoot后端接收數(shù)組對象
前端代碼
var Params = {
? type: "typeA",
? title: "titleA",
? authors: [{name:"upxuan", age:"18"}, {name:"susen", age:"18"}]
}
console.log(Params)
this.$ajax({
? url: '/api/manualAdd',
? method: 'post',
? contentType: "application/json; charset=utf-8",
? dataType: "json",
? data: Params
}).then( res => {
? console.log(res)
})后端代碼
@RequestMapping("/manualAdd")
@ResponseBody
public String AddManualJpaper (@RequestBody RequestManualAddData data) {
?? ?System.out.println("User:" + data.getType() + "," + data.getTitle());
?? ?System.out.println("Authors:" + data.getAuthors().get(0).getName() + "," + data.getAuthors().get(0).getAge());
? ? return "Get it";
}接收的數(shù)據(jù)對象類
private String type;
private String title;
private List<AuthorsModel> authors;
?
public String getType() {
?? ?return type;
}
?
public void setType(String type) {
?? ?this.type = type;
}
?
public String getTitle() {
?? ?return title;
}
?
public void setTitle(String title) {
?? ?this.title = title;
}
public List<AuthorsModel> getAuthors() {
?? ?return authors;
}
?
public void setAuthors(List<AuthorsModel> authors) {
?? ?this.authors = authors;
}
model
private String name;
private int age;
public String getName() {
?? ?return name;
}
?
public void setName(String name) {
?? ?this.name = name;
}
public int getAge() {
?? ?return age;
}
?
public void setAge(int age) {
?? ?this.age = age;
}后端List接收數(shù)組報400或收不到參數(shù)值
遇到一個關(guān)于前端傳數(shù)組到后端時因為無法接收參數(shù)報400或者接收不到參數(shù)值的問題:
在springboot項目中經(jīng)常會用 @RequestBody 或者 @RequestParam在接口中接收參數(shù),我們都知道:
@RequestBody用于接收json格式的對象數(shù)據(jù),像自定義User實體類對象,Map,List等@RequestParam用于接收單個的屬性


像上面的用對象或者單個屬性去接收前端傳來的參數(shù),還是能很愉快的接收的,但是有一種類型的就比較容易讓人極度不適了,那就是數(shù)組和集合類型的參數(shù)
這里我說一個集合類型的參數(shù),數(shù)組大致一樣:

如上圖接收一個List集合,不管是用 @RequestBody還是用 @RequestParam接收都沒有成功,不是報400就是參數(shù)值為null,然后就去百度瘋狂的逛了幾條芥,
還是沒有找到一個有效的辦法,最后索性自己研究,終于把問題給解決了。
說下我的解決方法
首相從postman工具我們可以看到j(luò)son有兩種格式一種是 { } 還有一種是 [ ] ,{}傳對象,[]傳數(shù)組,這個和前端的傳參方式是對應(yīng)的,所以前端在傳參數(shù)到后端時
就不能用{}而要用[]否則就會報400的錯誤,如下
var params = ["aaaa", "bbbb", "ccccc"];
屬性名可以自定義不影響后端接收,后端用 @RequestBody和 @RequestParam都能接收,至此問題就解決了,希望對大家有所幫助,如果那個地方有不對的也歡迎大家留言糾正!
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中ScheduledExecutorService介紹和使用案例(推薦)
ScheduledExecutorService是Java并發(fā)包中的接口,用于安排任務(wù)在給定延遲后運行或定期執(zhí)行,它繼承自ExecutorService,具有線程池特性,可復(fù)用線程,提高效率,本文主要介紹java中的ScheduledExecutorService介紹和使用案例,感興趣的朋友一起看看吧2024-10-10
如何使用Idea中的 Deployment 實現(xiàn)打包自動部署
這篇文章主要介紹了使用Idea中的 Deployment 實現(xiàn)打包自動部署,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08
Java使用redisson實現(xiàn)分布式鎖的示例詳解
這篇文章主要為大家詳細介紹了在Java項目中使用redisson實現(xiàn)分布式鎖,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,需要的可以參考一下2023-07-07
基于SpringBoot實現(xiàn)自動裝配返回屬性的設(shè)計思路
這篇文章主要介紹了基于SpringBoot實現(xiàn)自動裝配返回屬性,這里涉及到的技術(shù)知識點有注解解析器,為什么用ResponseBodyAdvice這里解析?不在Filter,Interceptors,本文結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友參考下吧2022-03-03

