Java @RequestParam映射<;字符串,字符串>;将变量名打印为spring boot中的键
当我试图在SpringBoot中将Map作为RequestParam传递时,它将变量名作为键打印,将完整值作为字符串打印。谁能帮我解释一下为什么它的行为很奇怪。下面是我的代码片段Java @RequestParam映射<;字符串,字符串>;将变量名打印为spring boot中的键,java,spring-mvc,spring-boot,Java,Spring Mvc,Spring Boot,当我试图在SpringBoot中将Map作为RequestParam传递时,它将变量名作为键打印,将完整值作为字符串打印。谁能帮我解释一下为什么它的行为很奇怪。下面是我的代码片段 @PostMapping(value = "/", produces = MediaType.ALL_VALUE) public String testController(@RequestParam Map<String, String> parms) throws Exception { par
@PostMapping(value = "/", produces = MediaType.ALL_VALUE)
public String testController(@RequestParam Map<String, String> parms) throws Exception {
parms.forEach((k, v) -> System.out.println((k + ":" + v)));
return "";
}
@PostMapping(value=“/”,products=MediaType.ALL\u值)
公共字符串testController(@RequestParam Map parms)引发异常{
parms.forEach((k,v)->System.out.println((k+“:“+v));
返回“”;
}
当我传递值时
{“testkey”:“testvalue”}
它产生的输出是parms:{“testkey”:“testvalue”}如果要将http请求体转换为映射,应该在参数上使用@RequestBody而不是@RequestParam。 RequestBody注释将http请求主体转换为对象,而RequestParam注释将http参数(URL参数或表单字段)解析为方法参数
@PostMapping(value = "/", produces = MediaType.ALL_VALUE)
public String testController(@RequestBody Map<String, String> parms) throws Exception {
parms.forEach((k, v) -> System.out.println((k + ":" + v)));
return "";
}
将发送以下http请求:
POST HTTP/1.1
Host: localhost:9090
Content-Type: application/json
Cache-Control: no-cache
{"testkey":"testkey"}
你是如何发送请求和映射的?有没有办法在同一个对象中传递多个内容类型?我想上传一个文件及其元数据映射,如下面的公共字符串UpdateInityImage(@RequestBody map metaData,@RequestParam(“文件”)MultipartFile文件)。我怎样才能达到目标this@Anand您可以使用
上载(@RequestParam(“文件”)MultipartFile MultipartFile、@RequestParam MultiValueMap allparams)
,并使用表单数据发送请求
POST HTTP/1.1
Host: localhost:9090
Content-Type: application/json
Cache-Control: no-cache
{"testkey":"testkey"}