• 乐优商城商品规格管理-规格组的添加功能-@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中的属性名,否则是请求不过去的。

  • 相关阅读:
    一、HTML基础学习
    算法之求正整数的二进制
    JavaScript ajax返回状态
    ajax实现异步校验
    比较喜欢的一种求阶乘的方法:用递归求阶乘
    java中自定义异常类
    我对多态的理解
    包装类和基本类型区别?(integer和int取值范围一样大)
    JAVA中默认的编码方式
    抽象类和接口的区别
  • 原文地址:https://www.cnblogs.com/rachelgarden/p/11483991.html
Copyright © 2020-2023  润新知