2010-04-25 11 views

उत्तर

14

यहाँ निर्भरता मैं उपयोग कर रहा हूँ (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> 

कि आप इस भंडार से प्राप्त कर सकते हैं:

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

नवीनतम [बीन सत्यापन 1.1] (http://beanvalidation.org/1.1/) संस्करण अद्यतन के लिए [अन्य उत्तर] (http://stackoverflow.com/a/17329473/642706) देखें। –

11

नवीनतम निर्भरता:

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

यह संक्रामक बीन मान्यता एपीआई को निर्भरता में खींचती है, तो आप अब ऐसा करने की जरूरत नहीं है:, आप जोड़ने की जरूरत हो सकती है अतिरिक्त सुविधाओं, अभिव्यक्ति भाषा और CDI समर्थन के लिए

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

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

स्रोत: Hibernate Validator documentation

ये सभी Maven केंद्रीय रेपो में दोनों कर रहे हैं, ताकि आप JBoss रेपो जोड़ने की जरूरत नहीं है।

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

Origin.Wise JAXB के @XmlLocation Locator की तरह कुछ है:

और btw यहाँ मेरी उदाहरण सुविधा विधि है।

संबंधित मुद्दे