Необязательные переменные пути в Spring-MVC RequestMapping URITemplate

У меня есть следующее отображение:

@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, но я не увидел там решения.

10
задан Community 23 May 2017 в 12:32
поделиться