2010-04-25 16 views

Trả lời

14

Dưới đây là các phụ thuộc Tôi đang sử dụng (với 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> 

đó bạn có thể nhận được từ kho này:

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

Xem [câu trả lời khác] (http://stackoverflow.com/a/17329473/642706) để biết cập nhật phiên bản mới nhất của [Bean Validation 1.1] (http://beanvalidation.org/1.1/). –

11

phụ thuộc mới nhất:

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

transitively này kéo trong sự phụ thuộc vào các API Bean Validation, vì vậy bạn không cần phải làm điều này nữa:

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

Đối với tính năng bổ sung, Expression Language và hỗ trợ CDI, bạn có thể cần thêm

<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> 

Nguồn: Hibernate Validator documentation

Tất cả đều ở trong Trung tâm Maven, vì vậy bạn không cần thêm repo JBoss.

Và BTW đây là ví dụ phương pháp thuận tiện của tôi:

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() 

Các Origin.Wise là một cái gì đó giống như JAXB của @XmlLocation Locator.