有关SpringMVC @RequestBody使用及应注意的坑
一、前端应注意:
1.前台JSON格式数据必须组装正确
2.前台传JSON数据时,必须为JSON字符串,不能为JSON对象
3.ajax传输时一定要指定Content-Type:'application/json;charset=UTF-8',
4.dataType : "json",
5.将组装好的JSON数据转换为JSON字符串 data : JSON.stringify(params),
6.1非基本类型的参数绑定映射,前台传JSON数据时无需再考虑key要与controller接收方法中的参数名称一致了,只需考虑参数的类型就可以。是什么类型,前台就组装什么类型的JSON数据。
例如:List,Map,List<Map<?,?>>等
@RequestMapping("/test.act")
@ResponseBody
public void test(@RequestBody List<String> list) {
System.out.println("getParams : " + list);
}
这个时候,前台JSON就不要这样去组装了:{“list”:[“a1”,”a2”]}
正确组装方式:[“a1”,”a2”]
6.2基本类型的参数绑定映射,前台传JSON数据时key需不需要保持与controller接收方法中的参数名称一致 [ 都 可 以 ]
例如:String等
@RequestMapping("/test.act")
@ResponseBody
public void test(@RequestBody String str) {
System.out.println("getParams : " + str);
}
这个时候,传:{" str ":"zhangsan"} {" str123 ":"zhangsan"} 都可以
二、后端应注意:
1.要有jackson相关依赖的全部jar包(内部主要是靠它来解析)
2.controller方法入参,作为接收的参数前,使用@RequestBody标识
这样从前端到后端数据的传输,基本问题就不大了
附加内容:复杂JSON组装