У меня есть следующее отображение:
@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) {}
Довольно сильно застрял на regex, поскольку я надеялся, что что-то простое вроде {middle:.*}, который только отображает /foo/a/bar, или {middle:(.*/)*}, который, похоже, ничего не отображает.
Выполняет ли AntPathStringMatcher токенизацию на "/" перед применением шаблонов regex? (что делает шаблоны, пересекающие / невозможными) или есть решение?
FYI это в Spring 3.1M2
Это похоже на @RequestMapping контроллеров и динамические URL, но я не увидел там решения.