@size(max = value)与@min(value)和@max(value)之间的区别

2022-08-31 12:35:54

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

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

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

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

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

谢谢。


答案 1

@Min并用于验证可能是(表示数字)、、等及其各自的原始包装器的数值字段。@MaxStringintshortbyte

@Size用于检查字段的长度约束。

根据文档支持 ,和 while 和 支持基元及其包装器。请参阅文档@SizeStringCollectionMaparrays@Min@Max


答案 2
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,并且是所谓的约束注释,我们用它来声明约束,这些约束应应用于 Car 实例的字段:@Size@Min

manufacturer永远不要为空

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

seatCount应至少为 2。


推荐