@PathVariable を使用した Spring MVC の切り捨てられたパス変数のアドレス指定
問題:
使用中RESTful API 開発用に @PathVariable を使用した Spring MVC では、特殊文字を含むパス変数が切り捨てられることが観察されています。具体的には、「blah2010.08.19-02:25:47」のようなパス変数を指定した場合、最初のピリオド(つまり「blah2010.08」)までの部分のみが @PathVariable によってキャプチャされます。
原因:
デフォルトでは、Spring MVC は @PathVariable 引数を単純な文字列として扱い、それらが特定の URL パラメーターの書式設定ルールに従うことを期待します。これらのルールには、パス変数で使用できる文字の制限が含まれており、ピリオドやハイフンなどの特殊文字は値の区切り文字として解釈されます。その結果、Spring は無効な文字の最初のインスタンスでパス変数を切り捨てます。
解決策:
Spring が @PathVariable 値を切り捨てることを防ぐには、明示的に引数がより広範囲の文字を受け入れるように指定します。これは、@RequestMapping アノテーションで正規表現を使用することで実現できます。
たとえば、パス変数にピリオド、ハイフン、その他の特殊文字を含めることを許可するには、次の正規表現を使用できます。
@RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName:.+}")
正規表現の「.」接尾辞は、{blahName} パス変数が空でない文字列と一致し、指定されたパス内のすべての文字を効果的にキャプチャする必要があることを示します。
以上がSpring MVC @PathVariable で特殊文字を含む切り捨てられたパス変数を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。