Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何发送阵列&;在AJAX调用中设置数据类型数据?_Spring_Spring Mvc_Spring Security - Fatal编程技术网

Spring 如何发送阵列&;在AJAX调用中设置数据类型数据?

Spring 如何发送阵列&;在AJAX调用中设置数据类型数据?,spring,spring-mvc,spring-security,Spring,Spring Mvc,Spring Security,我有这个春天的API @RequestMapping(value="setentry/{userId}/{columnName}", method = RequestMethod.POST) public ResponseEntity<?> updateUserSetTypeFields(@PathVariable String userId, @PathVariable String columnName, @RequestBody CollectionR

我有这个春天的API

@RequestMapping(value="setentry/{userId}/{columnName}", method = RequestMethod.POST)
public ResponseEntity<?> updateUserSetTypeFields(@PathVariable String userId, 
            @PathVariable String columnName, @RequestBody CollectionRequestParams entries ,
                HttpServletRequest request)
{ 
我尝试将此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
set
的参数,即发送
String[]
set
数据类型数据?

如我所见,您的控制器中缺少了“arr”变量。 我使用列表代替数组,下一种方法:

@RequestParam(value = "arr[]", required = true) List<Integer> myList
阿贾克斯 var arr=[“软件工程师”、“IT分析师”]; $.ajax({ 数据:{arr:arr}


删除数据类型:json!

当您使用
@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"
})
你必须把整个物体串起来


另外,不要使用非泛型Set,这是一种不好的做法。将其更改为设置为所需的任何类型。

尝试使用
json将数据对象转换为json字符串。stringify
I尝试了
data:{“arr”:json.stringify(arr)},
错误是
必需的列表参数'arr'不存在
请参阅我的答案。您必须对整个json对象进行字符串化。我如何从客户端发送
设置
数据类型,并在服务器端读取相同的数据类型?您是否尝试设置而不是列表?必需的列表参数'arr'不存在请尝试通过Chrome in按请求查看开发者模式,您将看到您的请求这是我的请求jquery ajax
var arr=[“软件工程师”,“IT分析师”];数据:{“arr[]”:JSON.stringify(arr)},数据类型:'JSON',类型:“POST”,内容类型:“application/JSON”
在chrome开发模式中,它在服务器端i hv
@RequestParam(value=“arr”,required=true)上显示
arr%5B%5D=%5B%22Software+Engineer%22%2C%22IT+Analyst%22%5D
集合项
和客户端
数据:JSON.stringify({“arr”:['111','222']),数据类型:'JSON',键入:“POST”,contentType:'application/JSON”
而我得到的
所需的设置参数“arr”在您的问题中不存在
@RequestBody CollectionRequestParams条目。我在原始问题中没有看到
@RequestParam
。实际上我正试图使用
@RequestParam
进行设置,因此我正在使用
@RequestParam>寻找解决方案
public ResponseEntity<?> updateUserSetTypeFields(@PathVariable String userId, @PathVariable String columnName, @RequestParam(value = "arr[]", required = true) List<Integer> yourList, HttpServletRequest request)
{ }
public ResponseEntity test(@RequestParam(value = "arr[]", required = true) String[] arr) {}
$.ajax({
    url:"setEntry/123/111",
    headers:{"X-AccessKey":"token","X-deviceId":"123"},
    data: JSON.stringify({"arr":['111','222']}),
    type:"POST",contentType:"application/json"
})