web-dev-qa-db-fra.com

Taille de validation du bean d'une liste?

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;
18
membersound

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

18
ByeBye

Vous pouvez utiliser @NotEmpty pour vérifier la liste vide. Cela garantit qu'il y a au moins un élément dans la liste.

2
Meet Shah