77

我想做一些域验证。在我的对象中,我有一个整数。

现在我的问题是:如果我写

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

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

如果它是一个整数,哪一个适合域验证?
谁能解释一下它们之间有什么区别?

谢谢。

4

3 回答 3

145

@Min@Max用于验证可以是String(表示数字)、intshort等的数字字段byte及其各自的原始包装器。

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

根据文档@Size支持String,Collection和whileMap并支持原语及其包装器。请参阅文档arrays@Min@Max

于 2012-06-25T13:12:30.203 回答
24
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。

于 2012-06-25T12:33:39.950 回答
2

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

@Range(min= SEQ_MIN_VALUE, max= SEQ_MAX_VALUE)

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

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

于 2021-02-01T12:06:51.787 回答