Регулярное выражение в контроллере spring
Я пытаюсь создать фильтр запросов, который будет использоваться только в том случае, если он соответствует шаблону буквы e, а затем номеру. Однако я не могу заставить его работать. Я получаю 400 ошибок каждый раз, когда я пытаюсь что-то с регулярным выражением.
Если я просто использую следующее, оно "работает", но также фиксирует сопоставления, которые не имеют чисел, которые я не хочу.
@RequestMapping(value = "e{number}",
method = RequestMethod.GET)
Я пробовал следующие комбинации.
@RequestMapping(value = "e{number}",
params = "number:\\d+",
method = RequestMethod.GET)
@RequestMapping(value = "e{number:\d+}",
method = RequestMethod.GET)
@RequestMapping(value = "/e{^\\+?\\d+\$}",
method = RequestMethod.GET)
@RequestMapping(value = "/{^\\e+?\\d+\$}",
method = RequestMethod.GET)
Ответы
Ответ 1
Согласно документации, вы должны использовать что-то вроде {varName:regex}
. Там даже пример:
@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{extension:\\.[a-z]+}")
public void handle(@PathVariable String version, @PathVariable String extension) {
// ...
}
}
Ответ 2
Вы должны использовать:
@RequestMapping("/e{number:\\d+})