2013-12-13 103 views
0

我有下面的代碼工作:通JSON作爲Java類春季控制器通過GET

@RequestMapping(value = "/jsonasclass", method = RequestMethod.POST, produces = "application/json") 
public @ResponseBody 
ContactVO jsonAsClassPost(@RequestBody ContactVO ct){ 
    ct.setFirstName("This-property-is-changed-in-the-controller"); 
    return ct; 
} 

,並以郵寄相應的Ajax調用:

$.ajax({ 
      url: '/jsonasclass/', 
      type: 'POST', 
      dataType: 'json', 
      data: JSON.stringify({ 
        id:1, 
        userID:1.1, 
        login:'sample-login', 
        firstName:'sample-first-name' 
       }), 
      contentType: 'application/json', 
      mimeType: 'application/json', 
      success: _callBack, 
      error: _errorCallback 
     }); 

現在我想達到同樣的的東西,但我想通過GET來完成。任何人都知道?

  • 我已經嘗試更改POST以獲取(在控制器和ajax調用)但它沒有工作。
  • 我得到的錯誤:描述服務器拒絕此請求,因爲請求實體的格式不是所請求方法的請求資源支持的格式。
+0

嘗試改用在AJAX調用 'GET' 和在@RequestMapping '方法' 屬性以及 – Keerthivasan

+0

是,我在兩個地方都改變了。但它沒有奏效。 – faisal

+0

使用Firebug跟蹤GET請求 – Keerthivasan

回答

1

感謝RaulRene在這裏的評論是你如何做到的。

  • 得到從控制器和變化的方法來擺脫@RequestBody的。
  • 發送類的屬性在控制器作爲瀏覽器變量和彈簧會自動將它們映射到類。

下面是解:

@RequestMapping(value = "/jsonasclass", method = RequestMethod.GET, produces = "application/json") 
public @ResponseBody 
ContactVO jsonAsClassGet(ContactVO ct){ 
    ct.setFirstName("This-property-is-changed-in-the-controller"); 
    return ct; 
} 

和對應AJAX:

$.ajax({ 
     url:'/jsonasclass/', 
     type: 'GET', 
     data: { 
       id:1, 
       userID:1.1, 
       login:'sample-login', 
       firstName:'sample-first-name' 
      }, 
     success: _callBack, 
     error: _errorCallback 
    }); 
+0

很高興你得到它的工作 – Floegipoky

+0

順便說一下,確保你接受的類作爲參數並返回你正在返回的類實現Serializable。 – faisal