6
如何設置一個List
應至少包含1且最多包含10個元素的bean驗證約束?List驗證大小的List?
無以下作品:
@Min(1)
@Max(10)
@Size(min=1, max=10)
private List<String> list;
如何設置一個List
應至少包含1且最多包含10個元素的bean驗證約束?List驗證大小的List?
無以下作品:
@Min(1)
@Max(10)
@Size(min=1, max=10)
private List<String> list;
我創建簡單的類:
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;
}
}
和測試:
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());
似乎@Size
註釋運作良好。它來自javax.validation.constraints.Size
明白了:我正在使用'spring-mvc',如果在輸入參數中完全定義了列表,那麼驗證只應用於'List'(我只是在我的請求中忽略了列表,因爲我設置了分= 1)。如果列表總是存在且至少有一個項目,解決方案是使用'@NotNull'' @ Size'。 – membersound
對我而言,@Size完美無缺。你能向我們展示你驗證它的代碼嗎?你使用了import javax.validation.constraints.Size嗎? – ByeBye