最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot處理form-data表單接收對(duì)象數(shù)組的方法

 更新時(shí)間:2023年11月10日 09:47:54   作者:i查拉圖斯特拉如是  
form-data則是一種更加靈活的編碼方式,它可以處理二進(jìn)制數(shù)據(jù)(如圖片、文件等)以及文本數(shù)據(jù),這篇文章主要介紹了SpringBoot處理form-data表單接收對(duì)象數(shù)組,需要的朋友可以參考下

前言

主要是為了存檔,碰到表單傳對(duì)象數(shù)組的情況,一般都是一個(gè)表單只能傳一個(gè)對(duì)象,后面經(jīng)過(guò)跟前端的研究和討論發(fā)現(xiàn)居然可以傳對(duì)象數(shù)組,以此作為記錄分享。

@Data
public class SealLocationInfoRequest  implements Serializable {
    private static final long serialVersionUID = 2392716281569231777L;
    private Long contractId;
    private Long serverId;
    private String filePath;
    private List<SealLocationInfo> sealLocationInfoList;
}
@Data
public class SealLocationInfo  implements Serializable {
    private static final long serialVersionUID = -8706741125508276806L;
    private Integer posType;//定位或關(guān)鍵字
    private float posX;
    private float posY;
    private String signOnPage;
    private Long sealId;
    private String key;
    private float width;
    private Integer signType;//2.騎縫章  1.其他
}

測(cè)試直接使用下標(biāo)方式請(qǐng)求

直接使用屬性下標(biāo)的方式傳遞

請(qǐng)求:

示例代碼:

@PostMapping(value = "/upload/multiple")
public ResponseEntity<ResponseResult<List<Object>>> uploadMultiple1213Batch(
    MultipartFile pdfFile,
    //            @ModelAttribute("request")
    List<SealLocationInfoRequest> request) throws Exception {
    //            @RequestParam("hosts") SealLocationInfoRequest hosts) throws Exception {
    //            @ModelAttribute("hosts") SealLocationInfoRequest hosts) throws Exception {
    return OpsResponse.ok(null);
}

結(jié)果:

java.lang.IllegalStateException: No primary or single unique constructor found for interface java.util.List

結(jié)果明顯不適配報(bào)錯(cuò)

測(cè)試二使用對(duì)象包裹的方式傳輸

@PostMapping(value = "/upload/multiple")
    public ResponseEntity<ResponseResult<List<Object>>> uploadMultiple1213Batch(
            MultipartFile pdfFile,
//            @ModelAttribute("request")
//            List<SealLocationInfoRequest> request) throws Exception {
//            @RequestParam("hosts") SealLocationInfoRequest hosts) throws Exception {
             SealLocationInfoRequest hosts) throws Exception {
        return OpsResponse.ok(null);
    }

請(qǐng)求體

curl的方式

curl --location 'http://localhost:8088/upload/record/upload/multiple' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: */*' \
--header 'Authorization: acf179d575a7492fbbf5deefbdc69fbd' \
--header 'from-service: trade-gateway' \
--header 'gateway_header: 2131321' \
--header 'traceId: 12312' \
--form 'sealLocationInfoList[0].posX="123213"'

頭一次發(fā)現(xiàn)還可以使用這種方式,就像json傳輸一樣,不過(guò)需要手動(dòng)設(shè)置下標(biāo),對(duì)了,文件也可以這樣傳輸,可以放對(duì)象里面也可以放外面,但是屬性名字一樣會(huì)雙重注入。

SpringBoot的接收

1. 使用@RequestParam注解來(lái)接收表單數(shù)據(jù)中的數(shù)組對(duì)象。

以下是一個(gè)示例:

@PostMapping("/example")
public ResponseEntity<String> handleFormData(@RequestParam("objects") List<Object> objects) {
    // 處理接收到的對(duì)象數(shù)組
    return ResponseEntity.ok("Received " + objects.size() + " objects");
}

在上面的示例中,我們使用@RequestParam注解來(lái)聲明我們要接收名為objects的表單參數(shù),并將其映射到一個(gè)List<Object>類(lèi)型的變量中。

2. 如果你的對(duì)象是一個(gè)自定義類(lèi),您可以使用@ModelAttribute注解來(lái)將表單數(shù)據(jù)映射到該類(lèi)的實(shí)例中。以下是一個(gè)示例:

@PostMapping("/example")
public ResponseEntity<String> handleFormData(@ModelAttribute("customObject") CustomObject[] customObjects) {
    // 處理接收到的自定義對(duì)象數(shù)組
    return ResponseEntity.ok("Received " + customObjects.length + " custom objects");
}

在上面的示例中,我們使用@ModelAttribute注解來(lái)聲明我們要接收名為customObject的表單參數(shù),并將其映射到一個(gè)CustomObject[]類(lèi)型的變量中。

3. `x-www-form-urlencoded` 和 `form-data` 協(xié)議的區(qū)別

`x-www-form-urlencoded` 和 `form-data` 是 HTTP 請(qǐng)求中常用的兩種表單數(shù)據(jù)編碼方式。

`x-www-form-urlencoded` 是默認(rèn)的編碼方式,它會(huì)將表單數(shù)據(jù)轉(zhuǎn)換為鍵值對(duì),并使用 `&` 符號(hào)進(jìn)行分隔,然后將鍵值對(duì)以 `key1=value1&key2=value2` 的形式進(jìn)行編碼。這種編碼方式通常用于較小的表單數(shù)據(jù),如登錄表單等。

而 `form-data` 則是一種更加靈活的編碼方式,它可以處理二進(jìn)制數(shù)據(jù)(如圖片、文件等)以及文本數(shù)據(jù)。它會(huì)將每個(gè)表單字段封裝成一個(gè)獨(dú)立的部分,每個(gè)部分都可以設(shè)置自己的 Content-Type,這樣就可以支持發(fā)送多個(gè)文件或者多個(gè)鍵值對(duì)。這種編碼方式通常用于上傳文件等操作。

總結(jié)

傳輸數(shù)組隊(duì)列不需要使用注解,在測(cè)試傳輸中不寫(xiě)注解反而能通過(guò)寫(xiě)了,寫(xiě)了@RequestPart注解反而通過(guò)不了,具體細(xì)節(jié)之后更新細(xì)則講解,這篇主要講解協(xié)議和請(qǐng)求,主要解決了表單形式傳輸對(duì)象的問(wèn)題。

參考資料

Difference Between form-data, x-www-form-urlencoded and raw in Postman | Baeldung

Forms in HTML documents

javascript - appending array to FormData and send via AJAX - Stack Overflow

使用formData向后臺(tái)傳遞數(shù)組對(duì)象

到此這篇關(guān)于SpringBoot處理form-data表單接收對(duì)象數(shù)組的文章就介紹到這了,更多相關(guān)SpringBoot接收對(duì)象數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java數(shù)組排列組合問(wèn)題匯總

    java數(shù)組排列組合問(wèn)題匯總

    這篇文章主要為大家詳細(xì)匯總了java數(shù)組排列組合問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • SpringBoot超詳細(xì)講解@Enable*注解和@Import

    SpringBoot超詳細(xì)講解@Enable*注解和@Import

    這篇文章主要介紹了SpringBoot?@Enable*注解和@Import,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java生成驗(yàn)證碼

    Java生成驗(yàn)證碼

    本文介紹了Java生成驗(yàn)證碼的流程與方法。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • Java線(xiàn)程池execute()方法源碼全面解析

    Java線(xiàn)程池execute()方法源碼全面解析

    這篇文章主要介紹了Java線(xiàn)程池execute()方法源碼全面解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • json解析時(shí)遇到英文雙引號(hào)報(bào)錯(cuò)的解決方法

    json解析時(shí)遇到英文雙引號(hào)報(bào)錯(cuò)的解決方法

    下面小編就為大家分享一篇json解析時(shí)遇到英文雙引號(hào)報(bào)錯(cuò)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • spring boot與redis 實(shí)現(xiàn)session共享教程

    spring boot與redis 實(shí)現(xiàn)session共享教程

    這篇文章主要介紹了spring boot與redis 實(shí)現(xiàn)session共享教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-04-04
  • 淺談Java的兩種多線(xiàn)程實(shí)現(xiàn)方式

    淺談Java的兩種多線(xiàn)程實(shí)現(xiàn)方式

    本篇文章主要介紹了淺談Java的兩種多線(xiàn)程實(shí)現(xiàn)方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • JNI實(shí)現(xiàn)最簡(jiǎn)單的JAVA調(diào)用C/C++代碼

    JNI實(shí)現(xiàn)最簡(jiǎn)單的JAVA調(diào)用C/C++代碼

    這篇文章主要介紹了JNI實(shí)現(xiàn)最簡(jiǎn)單的JAVA調(diào)用C/C++代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Java 動(dòng)態(tài)數(shù)組的實(shí)現(xiàn)示例

    Java 動(dòng)態(tài)數(shù)組的實(shí)現(xiàn)示例

    Java動(dòng)態(tài)數(shù)組是一種可以任意伸縮數(shù)組長(zhǎng)度的對(duì)象,本文主要介紹了Java 動(dòng)態(tài)數(shù)組的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java Scala數(shù)據(jù)類(lèi)型與變量常量及類(lèi)和對(duì)象超詳細(xì)講解

    Java Scala數(shù)據(jù)類(lèi)型與變量常量及類(lèi)和對(duì)象超詳細(xì)講解

    本文內(nèi)容主要分為3節(jié),依次講解:Scala的數(shù)據(jù)類(lèi)型有哪些? 變量常量如何使用? 類(lèi)和對(duì)象如何理解? 受限于博主的大腦容量,大概是無(wú)法做到事無(wú)巨細(xì)的,不過(guò)其實(shí)也沒(méi)必要那么"細(xì)",抓住主要脈絡(luò),加上大量的練習(xí),融會(huì)貫通只不過(guò)是時(shí)間的問(wèn)題
    2022-12-12

最新評(píng)論

临夏市| 福海县| 湛江市| 新建县| 景宁| 恩施市| 休宁县| 女性| 青铜峡市| 长泰县| 清水河县| 武安市| 辽宁省| 上林县| 香港| 灵武市| 佛坪县| 凌海市| 承德县| 青铜峡市| 海兴县| 讷河市| 信阳市| 洪泽县| 大荔县| 化州市| 巴东县| 汕头市| 封开县| 瓦房店市| 华坪县| 武清区| 富平县| 石门县| 英吉沙县| 民乐县| 班玛县| 温州市| 元阳县| 宁阳县| 和龙市|