首頁  >  文章  >  Java  >  如何在 Spring MVC @PathVariable 中處理帶有特殊字元的截斷路徑變數?

如何在 Spring MVC @PathVariable 中處理帶有特殊字元的截斷路徑變數?

Barbara Streisand
Barbara Streisand原創
2024-10-30 12:37:27664瀏覽

How to Handle Truncated Path Variables with Special Characters in Spring MVC @PathVariable?

使用@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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn