缺省情况下,约束没有特定的计算顺序,不管它们属于哪个组。然而,在有些情况下,控制特定的计算顺序是很有用的。
为了实现一个校验顺序,你只需定义一个接口,然后用注解@GroupSequence声明它,定义组中被校验的顺序。如果至少一个约束校验失败,其他的约束也就不再被执行。
import javax.validation.GroupSequence;
import javax.validation.groups.Default;
@GroupSequence({ Default.class, CarChecks.class, DriverChecks.class })
public interface OrderedChecks {
}
通过级联序列定义或组继承,定义序列的组和组成序列的组不能直接或间接地涉及循环依赖关系。如果对包含这种循环的组求值,则会引发GroupDefinitionException异常。
下面是使用一个新的队列的例子
Car car = new Car( "Morris", "DD-AB-123", 2 );
car.setPassedVehicleInspection( true );
Driver john = new Driver( "John Doe" );
john.setAge( 18 );
john.passedDrivingTest( true );
car.setDriver( john );
assertEquals( 0, validator.validate( car, OrderedChecks.class ).size() );
接下来一篇会讲“重新定义组队列”,敬请期待!