Регулярное выражение в контроллере spring - программирование
Подтвердить что ты не робот

Регулярное выражение в контроллере 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)
4b9b3361

Ответ 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+})