2016-12-29 67 views
0

我试图发送一个阵列

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

我们需要知道你的后台是如何期待的数据,并与'内容type' – Piou

回答

1

从我从春天文档,请参见:

@RequestParam是URL查询参数

@RequestBody是用于从身体参数

由于后请求体发送的信息,请尝试使用最新的一个:

@PostMapping(value = "url") 
public Set<String> func(@RequestBody String[] arr) { 

} 

您可能还需要修改角部位为:

$http.post("url",{arr: arr}) 
0

第二个参数应该是一个对象,arraysecondArray代表参数的名称。 yourArrayanotherArray将是您的Angular App中的数组。

$http.post(url', { 
      array: yourArray, 
      secondArray: anotherArray, 
    }); 

然后,在你的BE侧,你会是指那些价值arraysecondArray为好。

0

您需要与arr创建params对象作为重点:

var params = { 
    'arr': ["xxx.yyy","zzz.vvv"] 
}; 

$http.post("url", params); 
+0

这是行不通的,同样的错误 – Zerg

0
arr=["xxx.yyy","zzz.vvv"] 
var sendData = {data:arr}; 

$http.post("url", sendData); 

在春天,你可以得到送出数据。而当你要取值时,你应该给钥匙或索引。防爆。 ARR [0],arr.name

0

要发送的多个阵列槽后应该有在弹簧侧上的对象,例如ArrayWrapper,将举行3个阵列,然后一个ArrayWrapper对象应该,如果您使用的是像库杰克逊将对象转换从requestbody适当的java对象,你可以进一步处理发送槽角。