2014-06-10 23 views
1

我有兩個方法,這是衝突曖昧的處理方法爲映射HTTP路徑

1. @RequestMapping(value = { "/{name}" }, method = RequestMethod.GET) 
    void foo1(@PathVariable("name") final String name) 

2. @RequestMapping(value = { "/{email}" }, method = RequestMethod.GET) 
    void getTemplateVersionsBySenderForClient(@PathVariable("email") final String email, 
      @RequestParam(value = "timestamp", required = true) final long timestamp) 

我如何避免這種情況?

+0

作爲用戶,您如何區分這兩個映射?你最好提供語義上重要的URI(/ name/{name}和/ email/{email}) –

回答

-1

您可以將URI模板更改爲其他內容。您還可以將「電子郵件」URI模板更改爲使用正則表達式,以便第二種方法處理看起來像電子郵件地址的路徑。請參閱http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html,在「具有正則表達式的URI模板模式」下:

@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{extension:\\.[a-z]+}") 
public void handle(@PathVariable String version, @PathVariable String extension) { 
    // ... 
}