Рассмотрим ниже образец, который проверяет, является ли fromDate
и toDate
являются действительными даты и если fromDate
меньше toDate
:Как закоротить @CustomValidator?
@CustomValidator(type = "DateValidator",
fieldName = "fromDate",
shortCircuit = true),
@CustomValidator(type = "DateValidator",
fieldName = "toDate",
shortCircuit = true),
@CustomValidator(type = "CompareDatesValidator",
message = "validate.date.jalali.same.or.before",
shortCircuit = true,
parameters = {
@ValidationParameter(name = "fromDateParam", value = "${fromDate}"),
@ValidationParameter(name = "toDateParam", value = "${toDate}")
})
DateValidator
расширяет FieldValidatorSupport
и CompareDatesValidator
расширяет ValidatorSupport
Хотя я shortCircuit
в DateValidator
s, но CompareDatesValidator
всегда запускаются, что является неправильным. Могу ли я исправить это?!
Это ответ на ваш вопрос? Из документов: «Обычный валидатор имеет приоритет над полем-валидатором. Они проверяются сначала в том порядке, в котором они определены, а затем в валидаторе поля в том порядке, в котором они определены. Неисправность конкретного валидатора, отмеченного как короткое замыкание, предотвратит оценку последующих валидаторов, и ошибка проверки (ошибка действия или ошибка поля в зависимости от типа валидатора) будет добавлена в ValidationContext проверяемого объекта. –
@AleksandrM спасибо, что я это видел, но, к сожалению, это не помогло.Валидация должна быть короткой, но это не так! –
'Обычный валидатор имеет приоритет над полем-валидатором'. - Сначала будет выполнен ваш' CompareDatesValidator'. Значение короткого замыкания произойдет только после этого. Преобразуйте его в полевой валидатор, и он должен работать так, как вы хотите. –