1. 程式人生 > >@RequestBody接收的是一個json物件

@RequestBody接收的是一個json物件

  一直以為在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;
}