次のマッピングがあります。
@RequestMapping(value = "/{first}/**/{last}", method = RequestMethod.GET)
public String test(@PathVariable("first") String first, @PathVariable("last")
String last) {}
次の URI の場合:
foo/a/b/c/d/e/f/g/h/bar
foo/a/bar
foo/bar
fooをfirstに、barをlastにマップし、正常に動作します。
私が望むのは、foo と bar の間のすべてを単一のパス パラメータにマップするもの、または中間がない場合は null をマップするものです (最後の URI の例のように)。
@RequestMapping(value = "/{first}/{middle:[some regex here?]}/{last}",
method = RequestMethod.GET)
public String test(@PathVariable("first") String first, @PathVariable("middle")
String middle, @PathVariable("last") String last) {}
/foo/a/bar にのみマップされる{middle:.*} や、何もマップされないように見える {middle:(.*/)*} のような単純なものを期待していたので、正規表現にかなりこだわりました。
AntPathStringMatcher は、正規表現パターンを適用する前に「/」をトークン化しますか? (交差するパターンを作成する / 不可能) または解決策はありますか?
参考までに、これは春の 3.1M2 です
これは@RequestMapping コントローラーと動的 URLに似ているように見えますが、解決策はありませんでした。