带有地图的 RequestParam 不必要地绑定 GET 请求中的其他请求参数

RequestParam with map is unnecessarily binding other request params in GET request

我有一个这样的 GET 请求:-

    @GetMapping(value = "/foo")
          public Model getSomething(
          @RequestParam(value = "a", required = true) String a,
          @RequestParam(value = "b") String b,
          @RequestParam(value = "c") int c,
          @RequestParam Map<String, String> map) { 

}

问题是当我发出 get 请求时,a、b、c 被包含在地图中。 我使用了这样的映射:-

/foo?a=A&b=B&c=100&key1=value1&key2=value2

目前正在发生的事情是地图具有所有请求参数值。例如

a-"a"

b-"b"

c-100

key1-value1

key2-value2

要求是只有 key1 和 key2 作为键的映射。 我只想使用 map 提取 key1 和 key2。 如何实现。

如评论中所述,您不能排除 @RequestParam 映射的参数。

您的客户是否可以选择将正文作为 json 对象而不是请求参数发送这些参数?请求正文通常不会在 GET 请求中发送,但您可以这样做。然后你会改变 @RequestParam<String, String> map)@RequestBody Map<String, String> map)