我想要做一些域名验证
在我的对象中我有一个整数,
现在我的问题是如果我写
@Min(SEQ_MIN_VALUE)
@Max(SEQ_MAX_VALUE)
private Integer sequence;
和
@Size(min = 1, max = NAME_MAX_LENGTH)
private Integer sequence;
如果是整数哪一个适合域验证。
谁能解释一下他们之间的区别是什么?感谢。
答案 0 :(得分:85)
@Min
和@Max
用于验证可能为String
(代表数字),int
,short
,byte
的数字字段等等和它们各自的原始包装。
@Size
用于检查字段的长度限制。
根据文档@Size
支持String
,Collection
,Map
和arrays
,而@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 和 原始类型的相应包装器