如何发送数组&在AJAX调用中设置数据类型数据?

时间:2015-08-30 19:27:16

标签: spring spring-mvc spring-security

我有这个春天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数据类型数据?

2 个答案:

答案 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"
})

你必须对整个对象进行字符串化。

也不要使用非通用套装,这是一种不好的做法。将其更改为设置您需要的任何类型。