乐优商城商品规格管理-规格组的添加功能-@requestbody

day09-商品规格管理

今天在自己做商品规格组的新增功能时犯下的错误

后台新增功能获取不到页面传递的参数,以为是页面写的不对,后经debug,获取的参数全部为null,所以前端页面没问题,应该是获取参数有问题。

解决:参数列表加注解@RequestBody

自己困惑的点在哪里呢,品牌增加那里也只是在获取参数时直接写了个Brand brand 对象,以为规格参数的新增也是如法炮制就行。

其实是因为content-type不同,所以获取参数的方式就应该不同。

一.品牌增加功能

1.content-type如下

2.传递的参数

 3..controller层

用Brand对象直接接收就行,因为cids是个集合,Brand实体中没有,所以单独接收

 二.商品规格组的新增

1.页面请求为post

 2.content-type:application/json格式

 3.controller层就要用@RequestBody来接收参数

 三。@RequestBody注解

1.@RequestBody注解常用来处理Content-Type不是默认的application/x-www-form-urlcoded编码的内容

比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。

2.通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上

例如说以下情况:
    $.ajax({
        url:"/login",
        type:"POST",
        data:'{"userName":"admin","pwd","admin123"}',
        content-type:"application/json charset=utf-8",
        success:function(data){
          alert("request success ! ");
        }
    });

    @requestMapping("/login")
    public void login(@requestBody String userName,@requestBody String pwd){
      System.out.println(userName+" :"+pwd);
    }
    这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是呢假如我有一个User类,拥有如下字段:
      String userName;
      String pwd;
    那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上
    需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。

原文地址:https://www.cnblogs.com/rachelgarden/p/11483991.html