2017-05-22 1 views
6

Wie kann ich eine Bean-Validierungs-Constraint setzen, dass ein List sollte mindestens 1 enthalten und maximal 10 Elemente enthalten?Bean-Validierungsgröße einer Liste?

Keiner der folgenden Werke:

@Min(1) 
@Max(10) 
@Size(min=1, max=10) 
private List<String> list; 
+1

Für mich funktioniert @Size perfekt. Können Sie uns Code zeigen, wo Sie ihn validieren? Haben Sie import javax.validation.constraints.Size? – ByeBye

Antwort

8

Ich habe einfach Klasse:

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; 
    } 

} 

Und 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()); 

Es scheint, dass @Size Anmerkung gut funktioniert. Es kommt von javax.validation.constraints.Size

+1

Verstanden: Ich benutze 'spring-mvc', und die Validierung wird nur auf die' List' angewendet, wenn die Liste überhaupt in den Eingabeparametern definiert ist (Ich habe die Liste in meiner Anfrage einfach weggelassen, weil ich gesetzt habe min = 1). Die Lösung besteht darin, '@ NotNull'' @ Size' in Verbindung zu verwenden, wenn die Liste immer vorhanden sein und mindestens ein einzelnes Element haben soll. – membersound

Verwandte Themen