우리는 클래스 수준의 검증 주석을 정의하는 경우를 해결하기 위해 클래스 수준의 검증, 필드를 비교하고이 같은 ConstraintValidator
이 같은 하나봄 검증 - 필드 오류
public class ComparisonValidator implements ConstraintValidator<ValueMatches, Object>
{
private String[] fields;
@Override
public void initialize(final ValueMatches constraintAnnotation) {
fields = constraintAnnotation.fields();
}
@Override
public boolean isValid(final Object value, final ConstraintValidatorContext context) {
if (fields.length == 0) {
return true;
}
final BeanWrapperImpl beanWrapper = new BeanWrapperImpl(value);
final Object comparisonValue = beanWrapper.getPropertyValue(fields[0]);
for (int i = 1; i < fields.length; i++) {
final Object fieldValue = beanWrapper.getPropertyValue(fields[i]);
if (!comparisonValue.equals(fieldValue)) {
return false;
}
}
return true;
}
}
우리는 물론 글로벌 유효성 검사 오류가 발생을, Thymeleaf를 통해 액세스 할 수 있습니다 : ${#fields.errors('global')}
이제 어떻게 그 오류를 식별하고 특정 비교 오류인지 이해할 수 있습니까? 우리가 범 세계적인 실수에 대한 메시지를 얻은 후에, 아니면 내가 틀렸는가?