2014-11-01 40 views
0

這是Spring MVC的控制器/城市/ {}的cityNameSpring MVC的控制器 - 如何做URL限制

@RequestMapping(value = "/city/{cityName}") 
    public String getCity (@PathVariable("cityName") String cityName, Model uiModel) { 

} 

www.example.com/city/{cityName} 

這裏的cityName動態URL從加載,我的網站不能支持一些的cityName的, 它只支持班加羅爾,科欽,海德拉巴和欽奈,由於動態的東西 它支持其他城市或任何城市名稱的地方,它會給出錯誤, 如何限制cityName僅限上述4個城市。

是否有控制器本身的任何方式或我們不得不保持表(硬編碼的哈希表)

建議是做

回答

0

你要麼需要單獨的控制器映射或查找的最佳方式某處有cityName。這不必是硬編碼的;您可以改爲使用YAML或屬性文件來初始化Set或在數據庫中查找它。

1

如果您只想在代碼中對四個城市進行硬編碼,則還可以使用@RequestMapping中的正則表達式指定它們。

@RequestMapping("/cities/{cityName:Bengaluru|Kochin|Hyderabad|Chennai}") 
public String getCity(@PathVariable("cityName") String cityName) { 

} 

如果指定一個城市,不符合允許值控制器會自動返回HTTP 404

更新這種方式:固定採樣,正則表達式應該在@RequestMapping,不@PathVariable ,遺憾的錯誤

+0

謝謝,它的工作原理是一個小的變化,而不是Pathvariable在RequestMapping中進行更改 – 2014-11-01 12:35:01

+0

是的,我發現了這個錯誤,並在一個小時前更新了答案。對不起。無論如何,很高興它適合你:) – 2014-11-01 12:36:17

0

我們可以在控制器級別做靜態 @RequestMapping(值=「/城市/ {城市名:班加羅爾|金奈|科欽|海得拉巴}」) 或者我們可以創建表格,查詢,並把它在應用程序啓動時使用散列表。