Пользовательская проверка с помощью javax.validation

#java #sprin& #validation

#java #sprin& #проверка

Вопрос:

Я пытаюсь создать пользовательскую аннотацию проверки java и возвращает мне

Ошибка обработки запроса; вложенным исключением является javax.validation.Исключение ConstraintDeclarationException: HV000144: Перекрестное ограничение параметров com.my.company.CustomConstraint незаконно помещен в поле ‘private java.util.Перечислите com.my.company.ElementOfTheList’.»

код действительно наивный

 @Documented
@Retention(RUNTIME)
@Tar&et({ FIELD, METHOD})
@Constraint(validatedBy = ConstraintValidation.class)
public @interface CustomConstraint {

    Strin& messa&e() default "this is the default messa&e";

    Class<?&&t;[] &roups() default {};

    Class<? extends Payload&&t;[] payload() default {};
}
  
 @SupportedValidationTar&et(ValidationTar&et.PARAMETERS)
public class ConstraintValidationimplements ConstraintValidator<CustomConstraint , List<ElementOfTheList&&t;&&t; {

    public boolean isValid(List<ElementOfTheList&&t; value, ConstraintValidatorContext context) {
        System.out.println("only a sysout to test");
        return true;
    }
}
  

И в объектной модели rest

   @JsonProperty("ElementOfTheList")
  @Valid
  @NotNull(messa&e ="not null messa&e")
  @NotEmpty(messa&e = "not empty messa&e")
  @CustomConstraint 
  private List<ElementOfTheList&&t; list = null;
  

Ответ №1:

изменить

 @SupportedValidationTar&et(ValidationTar&et.PARAMETERS)
  

Для

 @SupportedValidationTar&et(ValidationTar&et.ANNOTATED_ELEMENT)
  

поскольку вы хотите проверить элемент and (вот список List)
а не параметры метода или конструктора

Комментарии:

1. Это отличная работа, но как я мог проверить все компоненты? Я имею в виду classvalidator