Lors de l'utilisation de la validation du bean pour valider l'état d'un objet, la méthode annotée @AssertTrue
est appelée 4 fois à chaque fois que la validation est appelée. Il ne devrait être appelé qu'une fois par invocation.Lors de l'utilisation de @AssertTrue dans les méthodes, la méthode est invoquée 4 fois pendant la validation (Bean Validation)
Version Hibernate-validateur: 5.1.3.Final
Voici un exemple:
pour la moto de classe suivante:
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(){...}
}
Et le principal:
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());
}
}
Lorsque validator.validate(new Motorcycle())
est c Alled, la méthode isAvailable()
est invoquée 4 fois.
Quelqu'un peut-il m'aider avec cette situation? Est-ce un bug? Comment est-ce que je travaille autour d'elle?