Comment puis-je définir une contrainte de validation de bean qu'un List
doit au minimum contenir 1 et au maximum contenir 10 éléments?
Aucune des œuvres suivantes:
@Min(1)
@Max(10)
@Size(min=1, max=10)
private List<String> list;
J'ai créé une classe simple:
public class Mock {
@Size(min=1, max=3)
private List<String> strings;
public List<String> getStrings() {
return strings;
}
public void set(List<String> strings) {
this.strings = strings;
}
}
Et test:
Mock mock = new Mock();
mock.setStrings(Collections.emptyList());
final Set<ConstraintViolation<Mock>> violations1 = Validation.buildDefaultValidatorFactory().getValidator().validate(mock);
assertFalse(violations1.isEmpty());
mock.setStrings(Arrays.asList("A", "B", "C", "D"));
final Set<ConstraintViolation<Mock>> violations2 = Validation.buildDefaultValidatorFactory().getValidator().validate(mock);
assertFalse(violations2.isEmpty());
Il paraît que @Size
l'annotation fonctionne bien. Ça vient de javax.validation.constraints.Size
Vous pouvez utiliser @NotEmpty pour vérifier la liste vide. Cela garantit qu'il y a au moins un élément dans la liste.