LINUX.ORG.RU

Bean Validation: validateValue

 


0

1

Доброго времени суток. Есть такой валидатор:

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.ValidatorFactory;
import java.util.Set;

public class ValueValidator
{
    public <T> ValueValidator( T object, String property, Object value )
    {
        try {
            ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
            javax.validation.Validator validator = factory.getValidator();
             /* marked */ Set<ConstraintViolation<T>> constraintViolations = validator.validateValue( object.getClass(), property, value ); /* marked */
            for( ConstraintViolation<T> cv : constraintViolations ) {
                System.out.println( String.format(
                    "Внимание, ошибка! property: [%s], value: [%s], message: [%s]",
                    cv.getPropertyPath(), cv.getInvalidValue(), cv.getMessage() ) );
            }
        } catch( Exception e ) {
            e.printStackTrace();
        }
    }
}

Пример вызова:

new ValueValidator( new ValueDemoClass(), "firstname", "John" );

Помеченная строка никак у меня никак не уживается. IDEA возникает по поводу несоответствия типов. Если начинаю насильно приводить типы, возникают ошибки выполнения. Что делать в данной ситуации? Спасибо



Последнее исправление: cetjs2 (всего исправлений: 3)

Добавь в метод Class<T> clazz в качестве аргумента и в вызове валидатора используй его.

А вообще, зачем шаблонность в валидаторе? Ему неинтересно, что у тебя за объекты, факт в том, что это Java Beans. Пусть будет Object, зачем множить сущности.

Adonai ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.