JQuery - ajax 将数组发送到 Spring 控制器 - 错误请求

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

我正在使用 Spring 5.3.9、jackson-core 和 jackson-databind-2.17.1 版本。从 UI 中,我将 json 数组发送到控制器。我在控制器中尝试了多种参数类型,但它们都不起作用。收到不好的请求。

Json Array

@Controller
@RequestMapping("/secure")
 public class PrsPyamentUtilizationSave {

@PostMapping(value = "/prsPyamentUtilSave.html", produces = MediaType.TEXT_HTML_VALUE)
@ResponseBody
public String prsPaymentUtilValidation(@RequestBody Map<String, Object> [] list) {
    
     System.out.println("paymentUtils: " + paymentUtils);
    

     return "OK";
}


}

如果我将其更改为 String 它可以工作,但输出看起来不像 json。

public String prsPaymentUtilValidation(@RequestBody String paymentUtils) 
  {
    
     System.out.println("jsonArray: " + paymentUtils);
return "OK";
 }


jsonArray: list%5B0%5D%5BReportId%5D=1234&list%5B0%5D%5BProviderId%5D=204437&list%5B0%5D%5BProgramTypeId%5D=1&list%5B0%5D%5BFcpUnits%5D=6&list%5B1%5D%5BReportId%5D=1234&list%5B1%5D%5BProviderId%5D=99999&list%5B1%5D%5BProgramTypeId%5D=1&list%5B1%5D%5BFcpUnits%5D=7
jquery json spring
1个回答
0
投票

是的,字符串总是有效,因为它就是字符串。 您的地图将无法工作,因为您的数据不是以地图的形式构建的。 考虑为此创建一个 DTO。

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class PaymentDTO {

    @JsonProperty("ReportId")
    private String reportId;

    @JsonProperty("ProviderId")
    private long providerId;

    @JsonProperty("ProgramTypeId")
    private long programTypeId;

    @JsonProperty("FcpUnits")
    private String fcpUnits;
}

然后你只需要让你的控制器获取其中的

List

public String prsPaymentUtilValidation(@RequestBody List<PaymentDTO> paymenDTOs) {
© www.soinside.com 2019 - 2024. All rights reserved.