21

我的 Spring MVC Form bean 中有以下属性,使用javax.validation.constraints来验证表单 bean,如下所示:

public class MyForm {
    @Size(min = 2, max = 50)
    private String postcode;

    // getter and setter for postcode.
}

我的问题是:这是否@Size(min = 2)意味着属性不能null因为它总是需要大于 2 的长度。我这么说的原因是因为@NotNull在同一个包中有一个约束,因此如果我应该这样做会使@NotNull约束变得多余在上面的bean中使用它。

4

3 回答 3

28

如果您查看注释大小的文档(http://docs.oracle.com/javaee/6/api/javax/validation/constraints/Size.html

您可以阅读“空元素被认为是有效的。
因此您需要在字段顶部指定@NotNull 。
您有两种选择:

@NotNull 
@Size(min = 2, max = 50)
private Integer age;

或者像 Riccardo F. 建议的那样:

@NotNull @Min(13) @Max(110)
private Integer age;
于 2013-06-27T13:51:36.130 回答
2

@NotNull也用于文本字段,但您可以像这样一起使用它们

@NotNull @Min(13) @Max(110)
private Integer age;

这意味着年龄不能为空,并且必须是 13 到 100 之间的值,并且

@NotNull
private Gender gender;

表示性别不能为空

于 2013-06-27T13:35:18.820 回答
1

根据文件@Size

null元素被认为是有效的。

作为参考,hibernate-validation 的实际@Size实现在:

org.hibernate.validator.constraints.impl.SizeValidator

所以@NotNull无论如何都要指定。

于 2013-06-27T13:36:52.660 回答