Jakarta Bean Validation说明

4. 注解含义
4.1 开启验证
首先我们看controller类最上方,我们标注了@Validataed,该注解的含义是:这个类要启用参数校验。在save方法的参数中标注了@Valid,含义为我们要对紧跟的实体进行校验,而具体校验的内容,为实体类中的我们的定义的约束
以Ability类举例,在name字段上方标记了@NotBlank,意为定义了该字段不允许为空的约束,如果name为空,校验就不通过,就会返回我们之前碰到的400异常。而type字段也标注了@NotNull,也定义了该字段不允许为空的约束,具体的区别以及其他内置的约束如3.5所示

4.2 内置约束
内置约束位于javax.validation.constraints保内,列表如下

4.2.1 @Null
被标注元素必须为null
接收任意类型
比如在创建一个英雄时,ID需要由数据库自增生成,而不是我们自定义,那么该我们在接收前台传递的json时就必须为空

4.2.2 @NotNull
被标注元素必须不为null
接收任意类型
定义一个字段不能为空,例如技能类型或者英雄名称

4.2.3 @AssertTrue
被标注元素必须true
支持的类型为boolean以及Boolean
null被认为是有效的
要么为null,否则必须为true

4.2.4 @AssertFalse
被标注元素必须false
支持的类型为boolean以及Boolean
null被认为是有效的
要么为null,否则必须为false

4.2.5 @Min
被标注元素必须为是一个数字,其值必须大于等于指定的最小值
支持的类型为BigDecimal 、BigInteger 、byte 、short 、int 、long 以及各自的包装类
注意double以及float由于舍入错误而不被支持
null被认为是有效的
4.2.6 @Max
被标注元素必须为是一个数字,其值必须小于等于指定的最大值
支持的类型为BigDecimal 、BigInteger 、byte 、short 、int 、long 以及各自的包装类
注意double以及float由于舍入错误而不被支持
null被认为是有效的
4.2.7 @DecimalMin
被标注元素必须为是一个数字,其值必须大于等于指定的最小值
支持的类型为BigDecimal 、BigInteger 、CharSequence、byte 、short 、int 、long 以及各自的包装类
注意double以及float由于舍入错误而不被支持
null被认为是有效的
4.2.8 @DecimalMax
被标注元素必须为是一个数字,其值必须小于等于指定的最大值
支持的类型为BigDecimal 、BigInteger 、CharSequence、byte 、short 、int 、long 以及各自的包装类
注意double以及float由于舍入错误而不被支持
null被认为是有效的
4.2.9 @Negative
被标注元素必须为是一个严格意义上的负数(即0被认为是无效的)
支持的类型为BigDecimal 、BigInteger、byte 、short 、int 、long 、float、double以及各自的包装类
null被认为是有效的
4.2.10 @NegativeOrZero
被标注元素必须为是负数或者0
支持的类型为BigDecimal 、BigInteger、byte 、short 、int 、long 、float、double以及各自的包装类
null被认为是有效的
4.2.11 @Positive
被标注元素必须为是一个严格意义上的正数(即0被认为是无效的)
支持的类型为BigDecimal 、BigInteger、byte 、short 、int 、long 、float、double以及各自的包装类
null被认为是有效的
4.2.12 @Positive OrZero
被标注元素必须为是正数或者0
支持的类型为BigDecimal 、BigInteger、byte 、short 、int 、long 、float、double以及各自的包装类
null被认为是有效的
4.2.13 @Size
被标注元素的大小必须在指定的边界区间
支持的类型为CharSequence(计算字符序列的长度) 、Collection(计算集合的大小)、Map(计算map的大小) 、Array(计算数组的长度)
null被认为是有效的
4.2.14 @Digits
被标注元素必须是在可接受范围内的数字
支持的类型为BigDecimal 、BigInteger、CharSequence、byte 、short 、int 、long 以及各自的包装类
null被认为是有效的
4.2.15 @Past
被标注元素必须是过去的某个时刻、日期或者时间
“现在”的概念是附加在Validator或者ValidatorFactory中的ClockProvider定义的,默认的ClockProvider根据虚拟机定义了当前时间,如果需要的话,会应用当前默认时区
支持的类型为java.util.Date 、java.util.Calendar、java.time.Instant、java.time.LocalDate 、java.time.LocalDateTime 、java.time.LocalTime} 、java.time.MonthDay 、java.time.OffsetDateTime 、java.time.OffsetTime 、java.time.Year 、java.time.YearMonth 、java.time.ZonedDateTime 、java.time.chrono.HijrahDate 、java.time.chrono.JapaneseDate 、java.time.chrono.MinguoDate、java.time.chrono.ThaiBuddhistDate 以及各自的包装类
null被认为是有效的
4.2.16 @PastOrPresent
被标注元素必须是过去或现在的某个时刻、日期或者时间
“现在”的概念是附加在Validator或者ValidatorFactory中的ClockProvider定义的,默认的ClockProvider根据虚拟机定义了当前时间,如果需要的话,会应用当前默认时区
“现在”的概念相对的定义在使用的约束上,例如,如果约束在Year上,那么现在表示当前年份
支持的类型为java.util.Date 、java.util.Calendar、java.time.Instant、java.time.LocalDate 、java.time.LocalDateTime 、java.time.LocalTime} 、java.time.MonthDay 、java.time.OffsetDateTime 、java.time.OffsetTime 、java.time.Year 、java.time.YearMonth 、java.time.ZonedDateTime 、java.time.chrono.HijrahDate 、java.time.chrono.JapaneseDate 、java.time.chrono.MinguoDate、java.time.chrono.ThaiBuddhistDate 以及各自的包装类
null被认为是有效的
4.2.17 @Future
被标注元素必须是未来的某个时刻、日期或者时间
“现在”的概念是附加在Validator或者ValidatorFactory中的ClockProvider定义的,默认的ClockProvider根据虚拟机定义了当前时间,如果需要的话,会应用当前默认时区
支持的类型为java.util.Date 、java.util.Calendar、java.time.Instant、java.time.LocalDate 、java.time.LocalDateTime 、java.time.LocalTime} 、java.time.MonthDay 、java.time.OffsetDateTime 、java.time.OffsetTime 、java.time.Year 、java.time.YearMonth 、java.time.ZonedDateTime 、java.time.chrono.HijrahDate 、java.time.chrono.JapaneseDate 、java.time.chrono.MinguoDate、java.time.chrono.ThaiBuddhistDate 以及各自的包装类
null被认为是有效的
4.2.18 @FutureOrPresent
被标注元素必须是未来或现在的某个时刻、日期或者时间
“现在”的概念是附加在Validator或者ValidatorFactory中的ClockProvider定义的,默认的ClockProvider根据虚拟机定义了当前时间,如果需要的话,会应用当前默认时区
“现在”的概念相对的定义在使用的约束上,例如,如果约束在Year上,那么现在表示当前年份
支持的类型为java.util.Date 、java.util.Calendar、java.time.Instant、java.time.LocalDate 、java.time.LocalDateTime 、java.time.LocalTime} 、java.time.MonthDay 、java.time.OffsetDateTime 、java.time.OffsetTime 、java.time.Year 、java.time.YearMonth 、java.time.ZonedDateTime 、java.time.chrono.HijrahDate 、java.time.chrono.JapaneseDate 、java.time.chrono.MinguoDate、java.time.chrono.ThaiBuddhistDate 以及各自的包装类
null被认为是有效的
4.2.19 @Pattern
被标注的CharSequence必须匹配指定的正则表达式,该正则表达式遵循Java的正则表达式规定
支持的类型为CharSequence
null被认为是有效的
4.2.20 @NotEmpty
被标注元素必须不为null或者空(以字符串举例,不为null并且不为“”)
支持的类型为CharSequence(计算字符序列的长度) 、Collection(计算集合的大小)、Map(计算map的大小) 、Array(计算数组的长度)
4.2.21 @NotBlank
被标注元素必须不为null,并且必须包含至少一个非空格的字符
支持的类型为CharSequence
4.2.22 @Email
字符串必须是格式良好的电子邮件地址
支持的类型为CharSequence

上一篇:java Web


下一篇:TypeScript数据类型 -- tuple、enum、any、never、union、literal...