Я пытаюсь использовать фреймворк javax.validation для всех потребностей проверки веб-приложения. Для этого мне нужно написать некоторые валидаторы, которые будут проверять основной объект. Например, предположим, что у моего объекта есть startDate и endDate, и мне нужно проверить, чтобы startDate не был больше, чем endDate. Или любой другой сценарий, когда проверка одного поля зависит от содержимого другого поля внутри основного объекта.Доступ к основному объекту в javax.validation.ConstraintValidator
Мой вопрос: как мне добраться до этих других полей или от самого главного объекта от валидатора. У меня есть чувство, что я могу добраться до него через constraintValidatorContext, но пока не понял, как это сделать.
Я использую следующие для написания пользовательских валидаторы: https://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-customconstraints.html
Является ConstraintValidator даже правильный инструмент для работы здесь? В принципе, моя конечная цель, чтобы все проверки случаются, просто пробегаю по валидаторам, как это:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<MyClass>> violations = validator.validate(myObject);
for(ConstraintViolation<MyClass> validation : violations)
{
// put error message in a collection to display in the jsp
}
И не целая строка, если/ELSES или попытаться/уловами в методе валидации, которые проверяют каждое поле.
Кроме того, мой проект не использует никаких фреймворков, таких как Hybernate или Spring, и я не могу их интегрировать в этот момент. Это всего лишь стандартный проект Servlet/jsp.