Tôi đang cố gắng để thêm chế kiểm tra, như mô tả ở đây How to specify the cardinality of a @OneToMany in EclipseLink/JPALàm cách nào để nhập javax.validation vào dự án Java SE của tôi?
15
A
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>
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
.
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/). –