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中的屬性名,否則是請求不過去的。