Validator的使用—实现第一个校验不通过就不在校验后面的

Validator的使用

目前程序写的Validator校验存在多个校验当第一个不满足条件还校验其它的问题。

建立Validator

单独建立一个Validator项目,可以方便其它项目引用,而且作为一个单独的公共模块,不影响目前项目的框架,可以直接引用

引入依赖

这块引入依赖最好不要配置依赖版本,使用主项目的版本

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
        </dependency>
    </dependencies>

建立配置类

public class ValidatorConfiguration {

    @Bean
    public Validator validator() {
        ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
                .configure()
                //快速失败返回模式
                .addProperty("hibernate.validator.fail_fast", "true")
                .buildValidatorFactory();
        return validatorFactory.getValidator();
    }

    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {
        MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();
        postProcessor.setValidator(validator());
        return postProcessor;
    }
}

建立启动注解类

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(ValidatorConfiguration.class)
public @interface EnableFormValidator {
}

正式项目使用

引入依赖

<dependency>
            <groupId>com.*</groupId>
            <artifactId>项目名称</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

启动类加入使用注解

@SpringBootApplication
@EnableFormValidator
public class MycloudSystemApplication {
    public static void main(String[] args) {
        SpringApplication.run(MycloudSystemApplication.class,args);
    }
}

Controller里面配置注解

	@PostMapping
    @ApiOperation(value = "新增菜单",httpMethod = "POST",tags="新增菜单")
    public R add(@Validated @RequestBody MenuReqVO menu)
    {

        return sysMenuService.insertMenu(menu);
    }

bean里面增加注解

当第一个menuName为空时候,就不会再校验menuId不可为空,直接返回,其中message是自定义的返回信息

public class MenuReqVO {

    /** 菜单名称 */
    @ApiModelProperty("菜单名称")
    @NotNull(message = "菜单名称不可为空")
    private String menuName;

    /** 用户id */
    @ApiModelProperty("用户id")
    private String userId;

    @ApiModelProperty("菜单ID")
    @NotNull(message = "菜单ID不可为空")
    private Long menuId;
}    

常用的Validator注解

@Null    限制必须为null
@NotNull    限制必须不能为null
@AssertFalse    限制必须为false
@AssertTrue    限制必须为true
@DecimalMax(value)    限制必须为一个不超过指定大小值的数字
@DecimalMin(value)    限制必须为一个不低于指定大小值的数字
@Digits(integert,fraction)    限制必须为一个小数,且整数部分位数不能超过integer,小数部分位数不能超过fraction
@Futrue    限制必须为一个将来的日期
@Past    限制必须为一个过去的日期
@Max(value)    限制必须为一个不超过指定大小值的数字
@Min(value)    限制必须为一个不低于指定大小值的数字
@Pattern(value)    限制必须符合指定的正则表达式
@Size(max,min)    限制字符长度必须处在max和min的值之间
@NotEmpty    验证注解的元素值不为null且不为空(字符串长度不为0,集合大小不为0)
@NotBlank    验证注解的元素值不为空(不为null,且去除首位空格后长度不为0),不同于@NotEmpty,@NotBlank只适用于字符串的校验且在校验时会去除字符串的空格
@Email    验证值是否为邮箱,也可以通过正则表达式和flag指定自定义的email格式
@Length    限制字符串参数长度
@Range    限制数值类型或者字符串在指定范围
@URL    对URL地址进行验证
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值