有关SpringMVC @RequestBody使用及应注意的坑(返回400,415)

一、前端应注意:

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>等

   @RequestMapping("/test.act")

   @ResponseBody

   public void test(@RequestBody List 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组装

你可能感兴趣的:(有关SpringMVC @RequestBody使用及应注意的坑(返回400,415))