use*_*591 2 java java-ee bean-validation java-ee-6
我正在尝试使用此处指定的Java EE 6验证
http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html
我注释了一个简单的字段
@Max(11)
@Min(3)
private int numAllowed;
Run Code Online (Sandbox Code Playgroud)
文档说"对于内置约束,可以使用默认实现"但是如何指定它.我的约束检查没有开始.我希望它能够调用字段的setter方法.我班上唯一的进口是
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
Run Code Online (Sandbox Code Playgroud)
我如何/在何处指定实施?我将约束放在一个简单的POJO而不是@Entity类的字段上,这样可以吗?
你对注释的使用就好了.每个放心的人都有一个验证器实现.
但是,在某些时候,您需要触发此POJO的验证.如果它@Entity
是你的JPA提供者触发验证,在你的情况下,你需要自己做.
Hibernate Validator有一个很好的文档,它是JSR-303的参考实现.
例
public class Car {
@NotNull
@Valid
private List<Person> passengers = new ArrayList<Person>();
}
Run Code Online (Sandbox Code Playgroud)
使用Car
和验证:
Car car = new Car( null, true );
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Car>> constraintViolations = validator.validate( car );
assertEquals( 1, constraintViolations.size() );
assertEquals( "may not be null", constraintViolations.iterator().next().getMessage() );
Run Code Online (Sandbox Code Playgroud)
您可能还想了解bean验证如何与其他框架(JPA,CDI等)集成.