我正在尝试发送一个数组
arr=["xxx.yyy","zzz.vvv"]
到这样的弹簧端点:
$http.post("url",arr)
春天的一面:
@PostMapping(value = "url")
public Set<String> func(@RequestParam(name="arr") String[] arr) {
}
然而我继续接受
org.springframework.web.bind.MissingServletRequestParameterException: Required String[] parameter 'arr' is not present
如何通过参数名称访问数组?我需要发送一些数组,所以我假设它们可以被他们的名字引用,但@RequestParam似乎不起作用
答案 0 :(得分:1)
从我从spring文档中看到的内容:
@RequestParam用于URL查询参数
@RequestBody用于来自body
的参数
由于帖子在请求正文中发送信息,请尝试使用最新的:
@PostMapping(value = "url")
public Set<String> func(@RequestBody String[] arr) {
}
您可能还需要将角度部分修改为:
$http.post("url",{arr: arr})
答案 1 :(得分:1)
角度:
getUsuarioId(id:number): Observable<Usuario>{
return this.http.post<Usuario>(`${this.url}usuarioId`, id, {headers: {'Content-Type':'application/json', 'id': `${id}`}} )
}
Java:
@PostMapping("/usuarioId")
public Usuario getUserId(@RequestHeader Integer id) {
return usuarioService.findByIdUsuario(id);
}
您可以将id变量更改为json,如下所示:
getUsuarioId(id:number): Observable<Usuario> {
let params = {
'Content-Type':'application/json',
'id':`${id}`
}
return this.http.post<Usuario>(`${this.url}usuarioId`, params, {headers: params})
}
答案 2 :(得分:0)
第二个参数应该是一个对象,array
和secondArray
代表参数的名称。 yourArray
和anotherArray
将成为Angular App中的数组。
$http.post(url', {
array: yourArray,
secondArray: anotherArray,
});
然后,在您的BE方面,您也会将这些值称为array
和secondArray
。
答案 3 :(得分:0)
您需要创建一个以arr
为键的params对象:
var params = {
'arr': ["xxx.yyy","zzz.vvv"]
};
$http.post("url", params);
答案 4 :(得分:0)
arr=["xxx.yyy","zzz.vvv"]
var sendData = {data:arr};
$http.post("url", sendData);
春天你可以获得sendData。当你要获取值时,你应该给出密钥或索引。防爆。 arr [0],arr.name
答案 5 :(得分:0)
要通过柱子发送多个阵列,弹簧侧应该有一个物体,例如ArrayWrapper将保存3个数组,然后是一个ArrayWrapper对象应该通过angular发送,如果您使用像jackson这样的库,它会将对象从requestbody转换为您可以进一步处理的正确java对象。