2013-09-25 31 views
0

您只能對xDomainRequests使用GET和POST。有沒有辦法我可以創建一個映射,也可以採取一個可選的參數來確定使用哪種webmethod?例如我有:Spring MVC地圖xDomainRequest

@RequestMapping(method = RequestMethod.PUT) 
@ResponseBody 
public SomeObject someUpdateFunction(@RequestBody SomeObject objectToUpdate) 
{ 
    ... 
} 

@RequestMapping(method = RequestMethod.POST) 
@ResponseBody 
public SomeObject someCreateFunction(@RequestBody SomeObject objectToUpdate) 
{ 
    ... 
} 

有沒有一種方法可以將XDR映射到PUT方法?我顯然不想將POST選項添加到someUpdateFunction()

回答

1

O'Reilly的書籍「RESTful Web服務」描述了一個約定,其中通過查詢字符串或請求主體將「_method」參數包含在「_method」參數中。當您在處理IE9及更高版本中的只允許GET和POST的跨域Ajax請求時,此功能特別有用。在這種情況下,你會包含一個值爲「PUT」的_method參數。

所以,如果你按照我剛纔所描述的慣例,也許你可以做這樣的事情:

private SomeObject processPut(objectToUpdate) 
{ 
    ... 
} 

@RequestMapping(method = RequestMethod.PUT) 
@ResponseBody 
public SomeObject someUpdateFunction(@RequestBody SomeObject objectToUpdate) 
{ 
    return processPut(objectToUpdate); 
} 

@RequestMapping(method = RequestMethod.POST, params = "_method=PUT") 
@ResponseBody 
public SomeObject someUpdateFunction(@RequestBody SomeObject objectToUpdate) 
{ 
    return processPut(objectToUpdate); 
} 

@RequestMapping(method = RequestMethod.POST) 
@ResponseBody 
public SomeObject someCreateFunction(@RequestBody SomeObject objectToUpdate) 
{ 
    ... 
} 

也許有更好的方法在Spring做到這一點,因爲我有這個經驗非常少框架,但這個概念應該撐起來。

+1

這太棒了,非常感謝! –