亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

主要是為了存檔,碰到表單傳對象數(shù)組的情況,一般都是一個表單只能傳一個對象,后面經過跟前端的研究和討論發(fā)現(xiàn)居然可以傳對象數(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;//定位或關鍵字
    private float posX;
    private float posY;
    private String signOnPage;
    private Long sealId;
    private String key;
    private float width;
    private Integer signType;//2.騎縫章  1.其他
}

測試直接使用下標方式請求

直接使用屬性下標的方式傳遞

請求:

示例代碼:

@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);
}

結果:

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

結果明顯不適配報錯

測試二使用對象包裹的方式傳輸

@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);
    }

請求體

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傳輸一樣,不過需要手動設置下標,對了,文件也可以這樣傳輸,可以放對象里面也可以放外面,但是屬性名字一樣會雙重注入。

SpringBoot的接收

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

以下是一個示例:

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

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

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

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

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

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

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

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

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

總結

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

參考資料

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向后臺傳遞數(shù)組對象

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

相關文章

  • 簡單介紹一下什么是microservice微服務

    簡單介紹一下什么是microservice微服務

    這篇文章主要介紹了一下什么是microservice微服務微服務的定義,微服務到底是什么意思?什么樣的架構可以叫做微服務?這篇文章可以給你答案
    2023-03-03
  • Java數(shù)據(jù)存儲的“雙子星”對決(Map和Set的區(qū)別)

    Java數(shù)據(jù)存儲的“雙子星”對決(Map和Set的區(qū)別)

    文章主要介紹了Java中Map和Set兩種數(shù)據(jù)結構的定義、實現(xiàn)、方法及應用場景,Map用于存儲鍵值對,鍵唯一,值可重復;Set用于存儲唯一元素,無序,兩者都提供了豐富的操作方法,如添加、刪除、查找等,感興趣的朋友一起看看吧
    2025-02-02
  • Java 使用JdbcTemplate 中的queryForList發(fā)生錯誤解決辦法

    Java 使用JdbcTemplate 中的queryForList發(fā)生錯誤解決辦法

    這篇文章主要介紹了Java 使用JdbcTemplate 中的queryForList發(fā)生錯誤解決辦法的相關資料,需要的朋友可以參考下
    2017-07-07
  • java集合與數(shù)組的相同點和不同點

    java集合與數(shù)組的相同點和不同點

    今天小編就為大家分享一篇關于java集合與數(shù)組的相同點和不同點,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • FastJSON的0day漏洞的解決

    FastJSON的0day漏洞的解決

    本文主要介紹了FastJSON的0day漏洞的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • Java實現(xiàn)任務管理器性能網(wǎng)絡監(jiān)控數(shù)據(jù)的方法詳解

    Java實現(xiàn)任務管理器性能網(wǎng)絡監(jiān)控數(shù)據(jù)的方法詳解

    在現(xiàn)代操作系統(tǒng)中,任務管理器是一個非常重要的工具,用于監(jiān)控和管理計算機的運行狀態(tài),包括CPU使用率、內存占用等,對于開發(fā)者和系統(tǒng)管理員來說,了解這些性能數(shù)據(jù)有助于優(yōu)化應用程序和系統(tǒng)性能,本文將介紹如何使用Java編寫一個簡單的程序來監(jiān)控網(wǎng)絡性能數(shù)據(jù)
    2025-01-01
  • Java集合排序規(guī)則接口Comparator用法解析

    Java集合排序規(guī)則接口Comparator用法解析

    這篇文章主要介紹了Java集合排序規(guī)則接口Comparator用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • 詳解SpringBoot整合MyBatis詳細教程

    詳解SpringBoot整合MyBatis詳細教程

    這篇文章主要介紹了詳解SpringBoot整合MyBatis詳細教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 詳解如何使用SpringBoot封裝Excel生成器

    詳解如何使用SpringBoot封裝Excel生成器

    在軟件開發(fā)過程中,經常需要生成Excel文件來導出數(shù)據(jù)或者生成報表,為了簡化開發(fā)流程和提高代碼的可維護性,我們可以使用Spring Boot封裝Excel生成器,本文將介紹如何使用Spring Boot封裝Excel生成器,并提供一些示例代碼來說明其用法和功能
    2023-06-06
  • java多線程之Balking模式介紹

    java多線程之Balking模式介紹

    大家好,本篇文章主要講的是java多線程之Balking模式介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01

最新評論