@RequestBody接收的是一個json物件
阿新 • • 發佈:2018-11-20
一直以為在SpringMVC環境中,@RequestBody接收的是一個json物件,除錯程式碼時沒有成功,後來才發現,其實 @RequestBody接收的是一個json字串,而不是一個json物件。
解決方案:用JSON.stringify(data)的方式將物件變成字串,同時ajax請求的時候也要指定dataType: "json",contentType:"application/json" ,這樣就可以輕易的將一個物件傳到Java端,使用@RequestBody即可繫結物件。
contentType:預設為"application/x-www-form-urlencoded",該預設值適合大多數應用場合。"application/json"表明引數是json字串。
dataType: 預期伺服器返回的資料型別。可用的型別如下:
- xml:返回XML文件,可用JQuery處理;
- html:返回純文字HTML資訊;包含的script標籤會在插入DOM時執行;
- script:返回純文字JavaScript程式碼,不會自動快取結果,除非設定了cache引數,注意在遠端請求時(不在同一個域下),所有post請求都將轉為get請求;
- json:返回JSON資料;
- jsonp:JSONP格式。使用SONP形式呼叫函式時,例如myurl?callback=?,JQuery將自動替換後一個 “?”為正確的函式名,以執行回撥函式;
- text:返回純文字字串。
js程式碼:
$.ajax({
url : context + "/service/message/saveZbl",
data :JSON.stringify({"uuid":uuid,"tableName":tableName,"columnName":columnName}),
dataType: "json",
contentType:"application/json",
type:"POST",
success : function(data){
if(data > 0){
dialog.close();
dialog.remove();
return false;
}else{
$.sticky(
"儲存失敗",
{
style : 'success',
autoclose : 1000,
position : 'center'
});
}
}
});
Java程式碼:
@RequestMapping(value = "/saveZbl")
@ResponseBody
public int saveZbl(HttpServletRequest request,@RequestBody JcZntxZbb zbb) {
return 1;
}