Spring 如何发送阵列&;在AJAX调用中设置数据类型数据?
我有这个春天的APISpring 如何发送阵列&;在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
@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 ajaxvar 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"
})