如何使用FormData将javascript数组与@RequestParam绑定?

问题描述 投票:1回答:1

问题是使用RequestParam注释绑定javascript arraylist。如果没有nokDataList,我有一个像这样的表单数据工作正常。 nokInfoDatas是一个javascript数组,在控制台中看起来像:enter image description here

var requestData = JSON.stringify(nokInfoDatas);
    console.log("nokInfoDatas");
    console.log(nokInfoDatas);
    console.log("requestData");
    console.log(requestData);
var fd = new FormData();
        fd.append('photo', file);
        fd.append('testId', testId);
        fd.append('nokDataList', nokInfoDatas);
var ajaxData = {
            type: "POST",
            data: fd,
            processData : false,
            contentType : false,
            url: sendUrl,
            headers: headersData,
    };

后端方面:

public @ResponseBody String answer(HttpServletRequest request, 
            @RequestParam(value = "photo") MultipartFile photo,
            @RequestParam(value = "testId") String testId,
        @RequestParam(value = "nokDataList") List<NokDataDTO> nokInfoDtos
            )
javascript java ajax spring form-data
1个回答
1
投票

你可以尝试如下:

使用您的JSON数据(requestData)创建Blob

var requestData = JSON.stringify(nokInfoDatas);
var fd = new FormData();
fd.append('photo', file);
fd.append('testId', testId);
fd.append('nokDataList', new Blob([requestData], {
  type: "application/json"
}));

将@RequestParam更改为@RequestPart,以便使用多部分解析JSON。

public @ResponseBody String answer(HttpServletRequest request, 
       @RequestParam(value = "photo") MultipartFile photo,
       @RequestParam(value = "testId") String testId,
       @RequestPart(value = "nokDataList") List<NokDataDTO> nokInfoDtos
      )
© www.soinside.com 2019 - 2024. All rights reserved.