Spring boot не распознает Pattern при установке через другую аннотацию - PullRequest
0 голосов
/ 22 мая 2019

Я должен проверить Rest API dto для электронной почты и номера.Для этого я использую пользовательский шаблон для проверки значения внутри dto.Использование @Pattern () с регулярным выражением работает правильно.Однако использование другой аннотации, помеченной @Pattern, не проверяет мой DTO.

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Pattern(regexp = "[0-9]{7,14}", message = "Message should be digit")
public @interface IsNumber {
}


public class MyDTO {
@IsNumber
private String number;
}

@PostMapping(...)
public GenericResponse addNumber(@Valid @RequestBody MyDTO myDto) {} 


Конечная точка API позволяет DTO проходить через мой сервис и получать к нему доступ, когда в действительности проверка должна была заблокировать запрос

1 Ответ

0 голосов
/ 07 июня 2019

Добавление @Constraint (validatedBy = {}) решило проблему. Эта аннотация вызывает код проверки, который проверяет шаблон регулярного выражения.

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Pattern(regexp = "[0-9]{7,14}", message = "Message should be digit")
@Constraint(validatedBy = {})
public @interface IsNumber {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...