2017-05-22 55 views
6

如何設置一個List應至少包含1且最多包含10個元素的bean驗證約束?List驗證大小的List?

無以下作品:

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

對我而言,@Size完美無缺。你能向我們展示你驗證它的代碼嗎?你使用了import javax.validation.constraints.Size嗎? – ByeBye

回答

8

我創建簡單的類:

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

+1

明白了:我正在使用'spring-mvc',如果在輸入參數中完全定義了列表,那麼驗證只應用於'List'(我只是在我的請求中忽略了列表,因爲我設置了分= 1)。如果列表總是存在且至少有一個項目,解決方案是使用'@NotNull'' @ Size'。 – membersound

相關問題