2013-09-24 40 views
4

有沒有辦法告訴Spring通過路徑變量的類型將請求映射到不同的方法,如果它們位於uri的相同位置?
例如,Spring RequestMapping:區分不同類型的PathVariable

@RequestMapping("/path/{foo}") 

@RequestMapping("/path/{id}") 

如果FOO應該是字符串,編號爲int,是有可能映射,而不是正確的找到請求URI?

+2

這是不可能做到這一點,沒有大量的配置。你能舉一個這樣做的例子嗎? –

+0

人們希望將某些API的格式更改爲第一種格式,而我已經有了類似第二種格式的內容。 – hsluo

+2

這是不值得的麻煩。改變你的處理器方法。 –

回答

8

根據彈簧的文檔,可以使用正則表達式路徑變量,這裏是從文檔的例子:從來看

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

(例如,從http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-patterns拍攝)

,它應該是可能爲你的情況寫這樣的東西:

@RequestMapping("/path/{foo:[a-z]+}") 

@RequestMapping("/path/{id:[0-9]+}") 
+0

使用'@RequestMapping(「/ path/{foo:[A-Za-z] +}」)'來爲String獲取'大寫'。 –