代码之家  ›  专栏  ›  技术社区  ›  Doga Ozdemir

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

  •  1
  • Doga Ozdemir  · 技术社区  · 7 年前

    问题是将javascript arraylist与RequestParam注释绑定。 如果没有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
                )
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Gurkan Yesilyurt    7 年前

    您可以尝试以下操作:

    创建 Blob 使用JSON数据(requestData):

    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
          )