繁体   English   中英

Java_Spring:无法将“java.lang.String”类型的属性值转换为属性“paramsMap”所需的类型“java.util.Map”

[英]Java_Spring: Failed to convert property value of type 'java.lang.String' to required type 'java.util.Map' for property 'paramsMap'

使用 Java Spring 创建一个 rest API 并希望以 Map 格式获取输入,但出现以下错误。 有谁知道是什么导致了这个异常的发生?

已查看资源(无法解决问题):

http://www.java2s.com/Tutorials/Java/Spring/0140__Spring_Map_Properties.htm

Spring MVC 填充 @RequestParam Map<String, String>

https://www.baeldung.com/spring-date-parameters

@RequestMapping("/api")
public interface ApiController {
          @GetMapping("/submitJob")
    JobSubmitResultDTO submitJob(@RequestBody JobSubmitRequestDTO request);
}

@Data
public  class JobSubmitRequestDTO {

    Map<String,Object> paramsMap = new HashMap<String,Object>();

}

@Data
public class JobSubmitResultDTO {
    String jobID;
    String message;
}  

@RestController
public class ApiController implements ApiController {


    @Override
    public JobSubmitResultDTO submitJob(JobSubmitRequestDTO request) {

        //Create an instance of JobSubmitResultDTO
        JobSubmitResultDTO response = new JobSubmitResultDTO();
        return response; //return null values for now 

    }
}

URL:  http://XXXXXXXXX:XXXXX/api/submitJob?paramsMap=%7B%7D

***passing {} -> %7B%7D or {'Age':12} would return the same error*** 

Error:
    {
  "timestamp": "2020-03-19T21:38:15.443+0000",
  "status": 400,
  "error": "Bad Request",
  "exception": "org.springframework.validation.BindException",
  "errors": [
    {
      "codes": [
        "typeMismatch.jobSubmitRequestDTO.paramsMap",
        "typeMismatch.paramsMap",
        "typeMismatch.java.util.Map",
        "typeMismatch"
      ],
      "arguments": [
        {
          "codes": [
            "jobSubmitRequestDTO.paramsMap",
            "paramsMap"
          ],
          "arguments": null,
          "defaultMessage": "paramsMap",
          "code": "paramsMap"
        }
      ],
      "defaultMessage": "Failed to convert property value of type 'java.lang.String' to required type 'java.util.Map' for property 'paramsMap'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'java.util.Map' for property 'paramsMap': no matching editors or conversion strategy found",
      "objectName": "jobSubmitRequestDTO",
      "field": "paramsMap",
      "rejectedValue": "{}",
      "bindingFailure": true,
      "code": "typeMismatch"
    }
  ],
  "message": "Validation failed for object='jobSubmitRequestDTO'. Error count: 1",
  "path": "/api/submitJob"
}

您正在使用代码接受请求正文中的数据。

JobSubmitResultDTO submitJob(@RequestBody JobSubmitRequestDTO request); 

将您的 JobSubmitRequestDTO 对象发送到请求正文中。 这是 JSON 类型的示例请求正文,它正在工作(我使用邮递员进行了测试):

{ "paramsMap": { "Key1":"Value1", "Key2":"Value2" } }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM