我有这个春天API
@RequestMapping(value="setentry/{userId}/{columnName}", method = RequestMethod.POST)
public ResponseEntity<?> updateUserSetTypeFields(@PathVariable String userId,
@PathVariable String columnName, @RequestBody CollectionRequestParams entries ,
HttpServletRequest request)
{
以下是CollectionRequestParams
public class CollectionRequestParams {
private String[] arr;
private Set set;
// setter & getter
我正在尝试将此API称为:
$.ajax({
url:"setEntry/123/111",
headers:{"X-AccessKey":"token","X-deviceId":"123"},
data:{"arr":['111','222']},
type:"POST",contentType:"application/json"
})
这是投掷HTTP status 400
我的问题是如何传递arr
&amp;的论据? set
即发送String[]
&amp; Set
数据类型数据?
答案 0 :(得分:0)
正如我所见,你错过了#arr&#34;在您的控制器中可变。 我使用List而不是Array,下一个方法:
@RequestParam(value = "arr[]", required = true) List<Integer> myList
在你的情况下,它应该是这样的:
public ResponseEntity<?> updateUserSetTypeFields(@PathVariable String userId, @PathVariable String columnName, @RequestParam(value = "arr[]", required = true) List<Integer> yourList, HttpServletRequest request)
{ }
最后一个例子的UPD: Java代码:
public ResponseEntity test(@RequestParam(value = "arr[]", required = true) String[] arr) {}
AJAX var arr = [&#34; Software Engineer&#34;,&#34; IT Analyst&#34;]; $就({ 数据:{ARR:ARR},
删除dataType:json!
答案 1 :(得分:0)
当您使用@RequestBody
时,这意味着获取请求的正文并尝试解析并将其映射到参数类。
在你的情况下,你需要一个类似
的json {"arr" : ["1", "asd", "45"], "set" : ["123", "222"]}
但这必须是请求的主体。类似的东西:
$.ajax({
url:"setEntry/123/111",
headers:{"X-AccessKey":"token","X-deviceId":"123"},
data: JSON.stringify({"arr":['111','222']}),
type:"POST",contentType:"application/json"
})
你必须对整个对象进行字符串化。
也不要使用非通用套装,这是一种不好的做法。将其更改为设置您需要的任何类型。