使用@PathVariable 解決Spring MVC 中截斷的路徑變量
問題:
使用時Spring MVC 與@PathVariable 用於RESTful API 開發,已觀察到包含特殊字元的路徑變數被截斷。具體來說,當提供像「blah2010.08.19-02:25:47」這樣的路徑變數時,@PathVariable 僅捕獲第一個句點之前的部分(即「blah2010.08」)。
原因:
預設情況下,Spring MVC 將 @PathVariable 參數視為簡單字串,並期望它們遵循某些 URL 參數格式規則。這些規則包括對路徑變數中允許的字元的限制,其中句點和連字符等特殊字元被解釋為值分隔符號。因此,Spring 在第一個無效字元處截斷路徑變數。
解:
為了防止 Spring 截斷 @PathVariable 值,有必要明確地指定參數應該接受更廣泛的字元範圍。這可以透過在 @RequestMapping 註解中使用正規表示式來實現。
例如,要允許路徑變數包含句點、連字符和其他特殊字符,可以使用以下正規表示式:
@RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName:.+}")
正規表示式中的「.」後綴表示{blahName } 路徑變數應符合任何非空字串,從而有效捕捉所提供路徑中的所有字元。
以上是如何在 Spring MVC @PathVariable 中處理帶有特殊字元的截斷路徑變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!