@size(max = value)和@min(value)@max(value)之间的差异

时间:2012-06-25 12:28:13

标签: java spring validation annotations

我想要做一些域名验证

在我的对象中我有一个整数,

现在我的问题是如果我写

@Min(SEQ_MIN_VALUE)
@Max(SEQ_MAX_VALUE)
private Integer sequence;

 @Size(min = 1, max = NAME_MAX_LENGTH)
 private Integer sequence;

如果是整数哪一个适合域验证。

谁能解释一下他们之间的区别是什么?

感谢。

3 个答案:

答案 0 :(得分:85)

@Min@Max用于验证可能为String(代表数字),intshortbyte的数字字段等等和它们各自的原始包装。

@Size用于检查字段的长度限制。

根据文档@Size支持StringCollectionMaparrays,而@Min@Max支持基元和他们的包装纸。请参阅documentation

答案 1 :(得分:15)

package com.mycompany;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class Car {

    @NotNull
    private String manufacturer;

    @NotNull
    @Size(min = 2, max = 14)
    private String licensePlate;

    @Min(2)
    private int seatCount;

    public Car(String manufacturer, String licencePlate, int seatCount) {
        this.manufacturer = manufacturer;
        this.licensePlate = licencePlate;
        this.seatCount = seatCount;
    }

    //getters and setters ...
}

@NotNull@Size@Min是所谓的约束注释,我们用它来声明约束,这些约束应该应用于Car实例的字段:

manufacturer永远不会为空

licensePlate永远不会为空,且长度必须介于2到14个字符之间

seatCount至少应为2。

答案 2 :(得分:2)

documentation 我得到的印象是,在您的示例中,它打算使用:

@Range(min= SEQ_MIN_VALUE, max= SEQ_MAX_VALUE)
<块引用>

检查注释值是否介于(包括)指定的最小值和最大值之间。 支持的数据类型:

BigDecimal、BigInteger、CharSequence、byte、short、int、long 和 原始类型的相应包装器