Добавить дополнительные свойства ConstraintViolation - PullRequest
0 голосов
/ 20 мая 2019

Я новичок в использовании валидатора Hibernate, и, очевидно, я могу получить только сообщение об ошибке и путь к свойству из ConstraintViolation.

Что я хочу сделать, так это предоставить больше информации. Например, Если я тестирую максимальное значение целого числа, в котором мой максимальный лимит продолжает изменяться, я хочу добавить максимальное значение помимо сообщения об ошибке и пути свойства:

  1. Сообщение об ошибке: некоторое сообщение об ошибке
  2. Макс. Значение: 30
  3. Путь свойства: some.property.path

    public boolean isValid(final Integer integer, final ConstraintValidatorContext constraintValidatorContext) {
    
        boolean isValid = true;
        if(integer >= SomeClass.maxValue) {
    
            context.disableDefaultConstraintViolation();
    
            context.buildConstraintViolationWithTemplate("some error message")
            .addPropertyNode("some.property.path")
            .addConstraintViolation();
    
            isValid = false;
            break;
    
        }
        return isValid;
    }
    

Есть идеи, как это сделать?

1 Ответ

1 голос
/ 20 мая 2019

Идея состоит в том, чтобы использовать функцию динамической полезной нагрузки, как описано здесь: https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-dynamic-payload в деталях. Например:

HibernateConstraintValidatorContext hibernateContext = context.unwrap(
    HibernateConstraintValidatorContext.class
);
hibernateContext.withDynamicPayload( yourAdditionalInformation );

В примерах документации мы включаем только простое значение, но вы можете внедрить bean-компонент, содержащий все необходимые вам свойства.

Обратите внимание, что это особенность Hibernate Validator (следовательно, необходимо развернуть контекст для его аналога, специфичного для Hibernate Validator).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...