问题描述
以下示例来自here。
public class Car {
public Car(@NotNull String manufacturer) {
//...
}
@ValidRacingCar
public Car(String manufacturer,String team) {
//...
}
public void drive(@Max(75) int speedInMph) {
//...
}
@Size(min = 1)
public List<Passenger> getpassengers() {
//...
}
}
要测试验证是否有效,他们建议使用一个验证器来检查所有验证是否有效。
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
executableValidator = factory.getValidator().forExecutables();
Car object = new Car( "Morris" );
Method method = Car.class.getmethod( "drive",int.class );
Object[] parameterValues = { 80 };
Set<ConstraintViolation<Car>> violations = executableValidator.validateParameters(
object,method,parameterValues
);
assertEquals( 1,violations.size() );
Class<? extends Annotation> constraintType = violations.iterator()
.next()
.getConstraintDescriptor()
.getAnnotation()
.annotationType();
assertEquals( Max.class,constraintType );
问题:是否有一种方法可以始终验证对象,而无需首先从ValidatorFactory
创建验证器?这样它在构造函数中已经失败,并且该对象未实例化。与我们在@Valid
中使用Spring MVC 3 Validation的情况类似。
Car car = new Car(null); //such that this already throws an error
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)