Java 列表的 Bean 验证大小?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/44108805/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 01:20:51  来源:igfitidea点击:

Bean validation size of a List?

javabean-validation

提问by membersound

How can I set a bean validation constraint that a Listshould at minimum contain 1 and at maximum contain 10 elements?

如何设置List至少应包含 1 个元素且最多包含 10 个元素的 bean 验证约束?

None of the following works:

以下均无效:

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

采纳答案by ByeBye

I created simple class:

我创建了简单的类:

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

}

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

It seems that @Sizeannotation is working well. It comes from javax.validation.constraints.Size

似乎@Size注释运行良好。它来自javax.validation.constraints.Size

回答by Meet Shah

You can use @NotEmpty to check for empty list. This make sure there is at least one item in list.

您可以使用 @NotEmpty 检查空列表。这确保列表中至少有一项。