2013-03-13 82 views
0

我有一個用例。彈簧MVC REST URL使用GET方法的代碼如下接收內容:包含'/'字符的@PathVariable參數值出現問題,使用Spring MVC

@RequestMapping("https://stackoverflow.com/q/{key}") 
public String query(@PathVariable() String key, Model model){ 
    //todo` 
} 

但這樣的請求的前端:/q/SiGeC%2FSi%E5%BC%82%E8%B4%A8%E7%BB%93%2F解碼字符/。控制器無法匹配映射請求。

我該怎麼辦?

+0

希望這有助於。 http://stackoverflow.com/questions/4470787/spring-rest-pathvariable-character-encoding – Usha 2013-03-13 19:38:34

回答

3

您可以在您的路徑變量的正則表達式,例如:

@RequestMapping("https://stackoverflow.com/q/{key:.*}") 

這將抓住/ Q /後的一切。或者你可以使它更具體的正則表達式來匹配你實際期待的模式。 @ PathVariable的

+0

對不起!這是行不通的。異常: java.util.regex.PatternSyntaxException:在索引1附近懸掛元字符'*' (*)\ Q. \ E. * – howsn 2013-03-15 07:05:36

+0

請理解,本網站上的大多數人都是從記憶中輸入這些東西。或者至少大部分時間我都是。不幸的是,我沒有一張備忘錄,隨時隨地可以找到所有答案並粘貼並修復每個人的代碼。我輸入了正則表達式(從'。'中刪除)。我更新了帖子以反映正確的正則表達式值。 ':'之後的所有內容都是正則表達式,因此,爲了吞噬適量的字符,可以隨意設置它。有大量網站提供在線Java正則表達式測試人員,所以選擇一個併發瘋。 – CodeChimp 2013-03-15 13:46:41

+0

謝謝CodeChimp。 – howsn 2013-03-16 01:18:44

2

註解未必能解決這個problem.Last使用的解決辦法是resolved.Code如下:

@RequestMapping("https://stackoverflow.com/q/**") 
相關問題