Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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 如何正确地将映射从angular客户端发送到请求正文中的spring引导控制器?收到的映射始终为空_Java_Angular_Spring_Dictionary_Controller - Fatal编程技术网

Java 如何正确地将映射从angular客户端发送到请求正文中的spring引导控制器?收到的映射始终为空

Java 如何正确地将映射从angular客户端发送到请求正文中的spring引导控制器?收到的映射始终为空,java,angular,spring,dictionary,controller,Java,Angular,Spring,Dictionary,Controller,角度客户端-httpClient发送请求 const map: Map<string, string> = new Map<string, string>(); map.set('foo', 'bar'); this.http.post(address, map, httpOptions).subscribe( next => console.log('next: ' + next), error => console.log('error: ' +

角度客户端-httpClient发送请求

const map: Map<string, string> = new Map<string, string>();
map.set('foo', 'bar');
this.http.post(address, map, httpOptions).subscribe(
  next => console.log('next: ' + next),
  error => console.log('error: ' + error),
  () => console.log('complete')
);
@RequestMapping(value = "/foobar", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public void fooBar(@RequestBody Map<String, String> foo){
    System.out.println(foo.entrySet());  //<-- always empty
}
const-map:map=newmap();
map.set('foo','bar');
this.http.post(地址、映射、httpOptions).subscribe(
next=>console.log('next:'+next),
error=>console.log('error:'+error),
()=>console.log('complete')
);
Springboot服务器-控制器接收请求

const map: Map<string, string> = new Map<string, string>();
map.set('foo', 'bar');
this.http.post(address, map, httpOptions).subscribe(
  next => console.log('next: ' + next),
  error => console.log('error: ' + error),
  () => console.log('complete')
);
@RequestMapping(value = "/foobar", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public void fooBar(@RequestBody Map<String, String> foo){
    System.out.println(foo.entrySet());  //<-- always empty
}
@RequestMapping(value=“/foobar”,method=RequestMethod.POST,products=MediaType.APPLICATION\u JSON\u value)
公共void fooBar(@RequestBody-Map-foo){

System.out.println(foo.entrySet());//您必须将映射转换为键值对数组,事实证明,Typescript映射不能直接在http post正文中使用

可以按如下方式转换地图:

const convMap = {};
map.forEach((val: string, key: string) => {
  convMap[key] = val;
});
this.http.post(apiBaseUrl + '/foobar', convMap, httpOptions).subscribe(
      next => console.log('next: ' + next),
      error => console.log('error: ' + error),
      () => console.log('complete')
);
在后端,您的
System.out.println(foo.entrySet());
将输出以下内容:[foo=bar]

JSON.stringify(map)
consumes=“application/JSON”
没有帮助,映射仍然为空