#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