#java #spring #spring-boot #annotations
#java #spring #spring-boot #примечания
Вопрос:
Я пытаюсь проверить несколько полей с помощью Spring boot ConstraintValidator. Но он не гудит без ошибок.
Может кто-нибудь, пожалуйста, помочь мне разобраться..
Контроллер
@PostMapping("/greetings")
public Greeting greeting(@RequestBody Greeting greeting) {
System.out.println(greeting);
return greeting;
}
Компонент, который необходимо проверить
@GreetingAnnotation
public class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
Аннотация
@Constraint(validatedBy = GreetingValidator.class)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface GreetingAnnotation {
String message() default "Field is required";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
Валидатор
public class GreetingValidator implements ConstraintValidator<GreetingAnnotation, Greeting > {
@Override
public boolean isValid(Greeting greeting, ConstraintValidatorContext context) {
return greeting.getId() >=0 amp;amp; greeting.getContent().length() >=100; // Never gets called
}
}
ПРИМЕЧАНИЕ: Это всего лишь пример заглушки для проверки объекта
Заранее спасибо
Комментарии:
1. 1) Добавьте аннотацию «@Component» в класс GreetingValidator. 2) Добавьте «@Valid» к параметру «приветствие»: «@RequestBody @Valid Приветствие приветствие»
Ответ №1:
Используете ли вы @Validated на уровне вашего контроллера?
Если нет, они добавляют его. Это сработает.