【问题标题】:MultiValueMap casuing issue application/json;charset=UTF-8 not supportedMultiValueMap 导致问题 application/json;charset=UTF-8 not supported
【发布时间】:2020-08-09 16:48:00
【问题描述】:
class A {

    @NotNull
    @NotEmpty
    String name;

    B b;

    //setters and getters
}

class B {

    MultiValueMap<String, String> keyMultiValues;

    //setters and getters
}


@RestController
class MyController {

    @PostMapping(value="/test", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public String doSomething(@RequestBody @Valid A a){       
                 //some business logic

    }

}

由于在 B 类 中使用 MultiValueMap,我遇到了以下错误 [org.springframework.web.HttpMediaTypeNotSupportedException:不支持内容类型'application/json;charset=UTF-8']

任何想法,如何解决上述问题?

【问题讨论】:

  • 您是否尝试过 B 类中的一些特定实现,例如 LinkedMultiValueMap ?
  • @MarcinErbel 嘿,非常感谢,用 LinkedMultiValueMap 替换 MultiValueMap 后效果很好,但我不明白,为什么 MultiValueMap 没有工作以及如何使用 LinkedMultiValueMap ......有什么想法吗?
  • 所以我发布了一个答案。您可以将其标记为正确 :) 关于不同之处在于您需要指定实现,因为您的反序列化器需要准确地知道它。

标签: spring spring-boot spring-mvc spring-restcontroller spring-rest


【解决方案1】:

请将接口更改为数据类上的实现,因为您需要准确地向解析器显示他应该使用哪个实现。在这种情况下,您可以使用 LinkedMultiValueMap。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 2021-08-31
    • 2020-03-20
    • 2016-02-21
    • 2023-02-06
    • 2013-05-09
    • 1970-01-01
    • 2018-07-24
    相关资源
    最近更新 更多