2011-08-03 49 views
1

我現在有一個控制器,它可以同時處理GET和POST的URL組:彈簧安置多個控制器的一個URL,但不同的HTTP方法

@Controller 
public class RestGroups { 

... 

    @RequestMapping(method = RequestMethod.GET, value = "/groups") 
    @ResponseBody 
    public GroupsDto groups() { 
     return new GroupsDto(getGroups()); 
    } 

    @RequestMapping(method = RequestMethod.POST, value = "/groups", headers = "Accept=application/xml") 
    @ResponseBody 
    public GroupsDto postGroup(@RequestBody GroupDto groupDto) { 
     groupSaver.save(groupDto.createEntity()); 
     return groups(); 
    } 

現在我想有兩個控制器,這兩個分配給同一網址但每個用於不同的方法,如下所示:

@Controller 
public class GetGroups { 

... 

    @RequestMapping(method = RequestMethod.GET, value = "/groups") 
    @ResponseBody 
    public GroupsDto groups() { 
     return new GroupsDto(getGroups()); 
    } 

... 

} 


@Controller 
public class PostGroup { 

... 


    @RequestMapping(method = RequestMethod.POST, value = "/groups", headers = "Accept=application/xml") 
    @ResponseBody 
    public GroupsDto postGroup(@RequestBody GroupDto groupDto) { 
     groupSaver.save(groupDto.createEntity()); 
     return groups(); 
    } 

... 
} 

這可能嗎?因爲現在我得到了Spring異常,一個URL不能由兩個不同的控制器處理。有沒有解決這個問題的方法?我真的想將這兩個完全不同的行爲分成兩個單獨的類。

回答

1

這個限制已經在Spring 3.1中用其新的HandlerMethod抽象解決了。你必須升級到3.1.M2。讓我知道你是否需要一個例子。

+0

3年後,我有同樣的需求,我找不到任何示例如何實現這一點。你能舉個例子嗎? – Mistic

+0

Hi @Michal請分享這個例子。 –

相關問題