樂優商城商品規格管理-規格組的添加功能-@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中的屬性名,否則是請求不過去的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM