Как получить переменную или имя переменной из функции validate фабрики проверки - PullRequest
0 голосов
/ 30 ноября 2018

Я использую javax.validation и аннотации для проверки данных, присвоенных объекту определенного класса.

    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();

    // create the string list to add the possible validation error
    List<String> result=new ArrayList<String>();

    // validate the object and get a set of Objects that hold the errors
    Set<ConstraintViolation<AbstractTracker>> violations = validator.validate(this);

    // is errors exist add loop through the set of Object and add the errors one by one to the errorlist
    if(!violations.isEmpty()){              
        for (ConstraintViolation<AbstractTracker> violation : violations){
            result.add("RecordID: "+ recordID + " Error is " +violation.getMessage());
        }   
    }
    return result;  

Я использую список для добавления всех ошибок, но я хочу знать конкретныепеременная, связанная с каждым errorMessage.

recordID - это одна переменная, которая дает мне идентификатор записи, которая проверяется в целом.Я спрашиваю каждую аннотированную переменную внутри объекта с тем же recordID.

Есть ли способ получить это?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Я использовал что-то еще:

Я получил все объявленные поля и перебрал их, используя функцию

validator.validateProperty(this, field.getName())

.Итак, я знаю поля и получаю массив со всеми нарушениями одновременно

0 голосов
/ 30 ноября 2018

ConstraintViolation содержит этот метод:

/**
 * @return the property path to the value from {@code rootBean}
 */
Path getPropertyPath();

Вызов violation.getPropertyPath().toString() должен дать вам то, что вы ищете.

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