Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @RequestParam映射<;字符串,字符串>;将变量名打印为spring boot中的键_Java_Spring Mvc_Spring Boot - Fatal编程技术网

Java @RequestParam映射<;字符串,字符串>;将变量名打印为spring boot中的键

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

当我试图在SpringBoot中将Map作为RequestParam传递时,它将变量名作为键打印,将完整值作为字符串打印。谁能帮我解释一下为什么它的行为很奇怪。下面是我的代码片段

@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"}