2010-04-25 33 views

Respuesta

14

Estas son las dependencias que estoy usando (con Maven):

<dependencies> 
    <!-- Bean Validation API and RI --> 
    <dependency> 
    <groupId>javax.validation</groupId> 
    <artifactId>validation-api</artifactId> 
    <version>1.0.0.GA</version> 
    </dependency> 
    <dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>4.0.2.GA</version> 
    </dependency> 
</dependencies> 

que se puede obtener de este repositorio:

<repositories> 
    <repository> 
    <id>jboss</id> 
    <name>JBoss repository</name> 
    <url>http://repository.jboss.org/maven2</url> 
    </repository> 
</repositories> 
+1

Consulte la [otra respuesta] (http://stackoverflow.com/a/17329473/642706) para la última actualización de la versión de [Bean Validation 1.1] (http://beanvalidation.org/1.1/). –

11

últimas dependencias:

<!-- BeanValidation and Hibernate Validator. --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>5.4.0.Final</version> 
    </dependency>   

tira Esta forma transitiva de la dependencia a la API Bean Validation, por lo que no necesita hacer esto más:

<dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>1.1.0.Final</version> 
    </dependency> 

Para características adicionales, lenguaje de expresión y de apoyo CDI, es posible que tenga que añadir

<dependency> 
     <groupId>org.glassfish</groupId> 
     <artifactId>javax.el</artifactId> 
     <version>3.0.1-b08</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator-cdi</artifactId> 
     <version>5.4.0.Final</version> 
    </dependency> 

Fuente: Hibernate Validator documentation

todos ellos están ambos en Maven central repo, por lo que no es necesario añadir el repositorio JBoss.

Y por cierto aquí es mi método de conveniencia ejemplo:

public static <T extends Object> void validate(T object) throws MigrationException 
{ 
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 
    Validator validator = factory.getValidator(); 
    Set<ConstraintViolation<T>> valRes = validator.validate(object); 
    if(! valRes.isEmpty()) 
    { 
     StringBuilder sb = new StringBuilder("Validation failed for: "); 
     if(object instanceof Origin.Wise) 
      sb.append(((Origin.Wise)object).getOrigin()); 
     else 
      sb.append(object); 

     for(ConstraintViolation<T> fail : valRes) 
     { 
      sb.append("\n ").append(fail.getMessage()); 
     } 
     throw new IllegalArgumentException(sb.toString()); 
    } 
}// validate() 

El Origin.Wise es algo así como JAXB de @XmlLocation Locator.

Cuestiones relacionadas