【发布时间】:2018-02-09 21:04:11
【问题描述】:
当使用 bean 验证来验证对象的状态时,使用 @AssertTrue 注释的方法在每次调用验证时都会被调用 4 次。每次调用只能调用一次。
Hibernate-validator 版本:5.1.3.Final
这是一个例子:
对于以下类别的摩托车:
import javax.validation.constraints.AssertTrue;
class Motorcycle{
private int fuel;
private int tireDurability;
@AssertTrue(message = "motorcycle.not.available.to.use")
public boolean isAvailable(){
return fuel > 0 && tireDurability > 0;
}
public void toUse(){...}
}
还有主要的:
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
public class Main{
public static void main(String []args){
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Motorcycle>> violations = validator.validate(new Motorcycle());
}
}
当validator.validate(new Motorcycle())被调用时,方法isAvailable()被调用4次。
任何人都可以帮助我解决这种情况吗?这是一个错误吗?我该如何解决?
【问题讨论】:
标签: java validation bean-validation hibernate-validator custom-validators