Javax Validation校验架构详解

你还在用if…else…校验前端传来的参数吗?还在用代码校验参数吗?如果是的话那么你们项目校验这块不是很完美。

小编这里分享通过注解校验参数,告别if…else…的时代来了!!!
本篇主要讲解Javax ValidationI注解校验架构,简单、方便、入门快,方便扩展且扩展简单,适合第一次使用注解校验的小伙伴。

如果是Spring项目那么这个架构依赖会自动引用,如果是非Spring项目得手动引用一下依赖。本文以Spring项目为主:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.16.Final</version>
    <scope>compile</scope>
</dependency>

这是注解包里面元素:
在这里插入图片描述

  • @AssertFalse 被注释的元素必须为 false
  • @AssertTrue 被注释的元素必须为 true
  • @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
  • @Email 被注释的元素必须是电子邮箱地址
  • @Future 被注释的元素必须是一个将来的日期
  • @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @NotBlank 验证注解的元素值不为空(不为null并去除首尾位空格)
  • @NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
  • @NotNull 不为null
  • @Null 为null
  • @Past 限制必须是一个过去的日期
  • @Pattern(value) 限制必须符合指定的正则表达式
  • @Size(max,min) `B限制字符长度必须在min到max之间

验证规则

  • 在Spring项目中定义一个需要验证的model内容如下:
@Data
public class ValidatorModel {
   

    @NotBlank(message = "姓名不能为空")
    private String name;

    @Size(min = 3, max 
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,针对您的问题,我可以给您提供以下的思路: 1. 首先,在进行校验之前,需要在pom.xml文件中添加如下依赖: ```xml <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency> ``` 2. 其次,可以使用Java 8中的LocalDateTime类型来表示日期时间。在进行校验时,可以使用javax.validation.constraints中的注解进行校验。例如,如果您需要校验某个LocalDateTime类型的字段是否在当前时间之前,可以使用@Past注解进行校验,示例代码如下: ```java import javax.validation.constraints.Past; import java.time.LocalDateTime; public class Entity { @Past(message = "时间必须在当前时间之前") private LocalDateTime dateTime; } ``` 3. 最后,在进行校验时,需要使用javax.validation.Validation类来创建一个Validator实例,并调用validate方法进行校验。示例代码如下: ```java import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; public class Main { public static void main(String[] args) { Entity entity = new Entity(); entity.setDateTime(LocalDateTime.now().plusDays(1)); ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Set<ConstraintViolation<Entity>> violations = validator.validate(entity); for (ConstraintViolation<Entity> violation : violations) { System.out.println(violation.getMessage()); } } } ``` 以上是我给您提供的思路,希望对您有所帮助。如果您有任何疑问,请随时向我提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值