Java 显示HashMap<;字符串,对象>;在从Rest API接收的Angular6中
我试图显示从我的控制器收到的HashMap的内容,但是我得到了一个空映射 这是我的控制器:Java 显示HashMap<;字符串,对象>;在从Rest API接收的Angular6中,java,angular,spring,rest,Java,Angular,Spring,Rest,我试图显示从我的控制器收到的HashMap的内容,但是我得到了一个空映射 这是我的控制器: @PostMapping(value = "getAllUsers") public HashMap<String, Object> getAllUsers(@RequestBody String s) { List<User> list = userRepository.getAll(s); HashMap<String, Object> userL
@PostMapping(value = "getAllUsers")
public HashMap<String, Object> getAllUsers(@RequestBody String s)
{
List<User> list = userRepository.getAll(s);
HashMap<String, Object> userList = new HashMap<String, Object>();
userList.put("list", list);
userList.put("total", list.size());
return userList;
}
这是我的api服务:
let URL = "api/v1";
getUsers(country: String): Observable<any> {
return this.http.post(URL + "getAllUsers", country);
}
let URL=“api/v1”;
getUsers(国家/地区:字符串):可观察{
返回this.http.post(URL+“getAllUsers”,国家/地区);
}
我想知道如何操作和迭代从控制器接收的HashMap。提前谢谢。Typescript将响应假定为
any
类型的对象,而不是映射
,因此请尝试以下操作:
Object.entries(data).forEach((value: string, key: string) => {
console.log(key, value);
});
Typescript假设响应是any
类型的对象,而不是映射
,因此请尝试以下操作:
Object.entries(data).forEach((value: string, key: string) => {
console.log(key, value);
});
您正在执行POST
请求,但是在您的用例中,您应该使用GET
http方法来检索资源POST
http方法用于添加资源。您必须更改控制器才能使用@GetMapping()
@GetMapping(“/getAllUsers”)
公共HashMap getAllUsers(@PathVariable字符串s)
{
List List=userRepository.getAll;
HashMap userList=新建HashMap();
userList.put(“list”,list);
userList.put(“total”,list.size());
返回用户列表;
}
您还应该将该控制器的参数从@RequestBody
更改为@PathVariable
@PathVariable
注释用于将URI变量绑定到方法
参数
@RequestBody
注释绑定发送进来的内容(POST/PUT)
带注释变量的请求正文。(通常,您只能使用
@可包含“正文”内容的请求的RequestBody,例如POST
或者说
您可以阅读HTTP方法。您正在执行POST
请求,但在您的用例中,您应该使用GET
HTTP方法来检索资源POST
http方法用于添加资源。您必须更改控制器才能使用@GetMapping()
@GetMapping(“/getAllUsers”)
公共HashMap getAllUsers(@PathVariable字符串s)
{
List List=userRepository.getAll;
HashMap userList=新建HashMap();
userList.put(“list”,list);
userList.put(“total”,list.size());
返回用户列表;
}
您还应该将该控制器的参数从@RequestBody
更改为@PathVariable
@PathVariable
注释用于将URI变量绑定到方法
参数
@RequestBody
注释绑定发送进来的内容(POST/PUT)
带注释变量的请求正文。(通常,您只能使用
@可包含“正文”内容的请求的RequestBody,例如POST
或者说
您可以阅读有关HTTP方法的内容。这里的要点不是HashMap迭代,而是即使在这里您也会得到空的响应数据
this.userService.getUsers("canada").subscribe((data) => {
console.log(data); // this returns an empty object
添加@ResponseBody
@PostMapping(value = "getAllUsers")
@ResponseBody
public HashMap<String, Object> getAllUsers(@RequestBody String s)
=>最好使用Http约定,即使用get通过post获取数据。虽然数据仍将在Post中接收,但更喜欢get()。这里的重点不是HashMap迭代,而是即使在这里也会得到空的响应数据
this.userService.getUsers("canada").subscribe((data) => {
console.log(data); // this returns an empty object
添加@ResponseBody
@PostMapping(value = "getAllUsers")
@ResponseBody
public HashMap<String, Object> getAllUsers(@RequestBody String s)
=>最好使用Http约定,即使用get通过post获取数据。虽然数据仍将在Post中接收,但更喜欢get()。尝试http.get()
而不是http.Post()
首先阅读http协议的工作原理,然后使用它们。您的URL是否完整?你展示的是“api/v1/getAllUsers”。您是否在网络选项卡中检查了呼叫响应?是否确定,List List=userRepository.getAll代码>有值的数据加拿大
?另外,data
上的forEach
在前端不起作用,因为它不是Array
类型,您需要在data.list
上迭代它。是的,有关于加拿大值的数据,我可以得到总数,但不能得到数据本身尝试http.get()
而不是http.post()
首先阅读http协议的工作原理,然后使用它们。您的URL是否完整?你展示的是“api/v1/getAllUsers”。您是否在网络选项卡中检查了呼叫响应?是否确定,List List=userRepository.getAll代码>有值的数据加拿大
?另外,data
上的forEach
在前端不起作用,因为它不是Array
类型,您需要在数据上迭代它。list
。是的,有关于加拿大值的数据,我可以得到总数,但不能得到数据本身。我认为这不是问题。您仍然可以声明any
,并从REST端点获取数据。这里的问题是没有从REST控制器返回任何内容。但是您不能对任何应用forEach
方法,也没有不能从POST请求中检索数据的规则,将这些方法用于特定目的只是标准,但它们没有这样的限制。我认为这不是问题。您仍然可以声明any
,并从REST端点获取数据。这里的问题是没有从REST控制器返回任何内容。但是您不能在any
上应用forEach
方法,也没有无法从POST请求检索数据的规则,使用这些方法用于特定目的是标准的,但它们没有这样的限制是的,正如你所说的问题在控制器端,我得到了空数据,但我得到了总数,谢谢。正如你所说的问题在控制器端,我得到了空数据,但我得到了总数,谢谢