Проверка регулярных выражений не происходит в Spring Boot Controller - PullRequest
0 голосов
/ 01 февраля 2019
@RequestMapping(value="apiInventory/apis",method=RequestMethod.GET)
public Map<String,Object> getData(@NotNull @Valid @RequestParam("host") String host,
        @NotNull @Valid @RequestParam("apiGroup") String basePath,
        @RequestParam(value="path",required=false) String path, 
        @RequestParam(value="version",required=false) String version, 
        @Valid @Pattern(regexp="get|post|put|delete|patch|options") @RequestParam(value="httpMethod",required=false) String httpMethod, 
        @RequestParam(value="includeAttributeDefinition",required=false, defaultValue="false") boolean includeAttributeDefinition) throws Exception{

          //My logic
        }

Я должен убедиться, что httpMethod принимает только значения get, post, put, delete, patch, options

Однако проверка не происходит.Я ожидал ошибку, но ни одного не было выдано, когда я послал недействительный httpMethod.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вам нужно аннотировать класс контроллера с помощью @Validated, чтобы проверка работала.

0 голосов
/ 01 февраля 2019

Ваше регулярное выражение не делает то, о чем вы думаете.Вы окружили все это квадратными скобками [], превратив его в класс символов, состоящий из символов get|posudlachin.

Попробуйте просто снять квадратные скобки, чтобы регулярное выражение было get|post|put|delete|patch|options.

Вам также может понадобиться использовать аннотацию @Valid для httpMethod.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...