いくつかの検証を実行する必要があるオブジェクトのリストがあります
@KeyValid
@Valid
protected List<KeyValue> keyValues;
そして、私はそれのために作成された次の注釈を持っています:
@Target({ElementType.TYPE, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = KeyValidator.class)
public @interface KeyValid{
String message() default "invalid_parameter_default_message";
String[] checks() default {};
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
そして、これは私のバリデータです:
public class KeyValidator implements ConstraintValidator<KeyValid, KeyValue> {
@Override
public void initialize(KeyValid keyValid) {
}
@Override
public boolean isValid(KeyValue keyValue, ConstraintValidatorContext constraintValidatorContext) {
return true;
}
}
リスト、マップ、またはセットにカスタム制約によって注釈が付けられている場合、コレクションを一括で検証できることをどこかで読んだことがあり、コレクションのすべての要素がバリデーターを呼び出しますが、上記のコードは次のエラーをスローします
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'com.util.Validators.KeyValid' validating type 'java.util.List<com.model.KeyValue>'. Check configuration for 'keyValue'