• 【无标题】


    想要使用validated需要引入Jar包,有两个方式,选择一种即可:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.1.5.Final</version>
    </dependency>

     必须要引入,否则@validated不会生效

    1. 普通模式(默认是这个模式):会校验完所有的属性,然后返回所有的验证失败信息。

    2. 快速失败模式:只要有一个验证失败,则返回。

    通常在实际开发中,我们需要配置快速失败模式,快速失败模式的配置方式:

    package com.morris.validator.config;

    import org.hibernate.validator.HibernateValidator;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;

    import javax.validation.Validation;
    import javax.validation.Validator;
    import javax.validation.ValidatorFactory;

    @Configuration
    public class ValidatorConfig {

        @Bean
        public Validator validator() {
            ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
                    .configure()
                    // 快速失败模式
                    .failFast(true)
                    .buildValidatorFactory();
            return validatorFactory.getValidator();
        }
    }

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

    常用注解说明

    @AssertFalse:
     
    所注解的元素必须是Boolean类型,并且值为false
     
    @AssertTrue:
     
    所注解的元素必须是Boolean类型,并且值为true
     
    @DecimalMax:
     
    所注解的元素必须是数字,并且值要小于或等于给定的BigDecimalString值
     
    @DecimalMin:
     
    所注解的元素必须是数字,并且值要小于或等于给定的BigDecimalString值
     
    @Digits:
     
    所注解的元素必须是数字,并且它的值必须有指定的位数
     
    @Email:
     
    所注解的元素要匹配指定的正则表达式
     
    @Max:
     
    所注解的元素必须是数字,并且值要小于或等于给定的值。注意如果@Max所注解的元素是null,则@Max注解
    会返回true,所以应该把@Max注解和@NotNull注解结合使用
     
    @Min:
     
    所注解的元素必须是数字,并且值要大于或等于给定的值。注意如果@Min所注解的元素是null,则@Min注解
    会返回true,即也会通过校验,所以应该把@Min注解和@NotNull注解结合使用。
     
    @NotBlank:
     
    所注解的元素不能为null且不能为空白,用于校验CharSequence(含String、StringBuilder和StringBuffer)
     
    @NotEmpty:
     
    所注解的元素不能为null且长度大于0,可以是空白,用于校验CharSequence、数组、Collection和Map
     
    @NotNull:
     
    所注解的元素不能为null
     
    @Null:
     
    所注解的元素必须为null
     
    @Pattern:
     
    所注解的元素必须匹配指定的正则表达式。注意如果@Pattern所注解的元素是null,则@Pattern注解会返回
    true,即也会通过校验,所以应该把@Pattern注解和@NotNull注解结合使用
     
    @Size:
     
    所注解的元素必须符合指定的大小,该注解可用于数组,CharSequence(含String、StringBuilder和
    StringBuffer),Collection和Map。注意如果@Size所注解的元素是null,则@Size注解会返回true,即也
    会通过校验,所以应该把@Size注解和@NotNull注解结合使用

     eg:

    1. @Data
    2. public class Address {
    3. @NotBlank(message = "province不能为空")
    4. private String province;
    5. private String city;
    6. }

    1. import com.example.demovalidator.Vo.ResultVo;
    2. import com.example.demovalidator.enums.ErrorCode;
    3. import org.springframework.validation.FieldError;
    4. import org.springframework.web.bind.MethodArgumentNotValidException;
    5. import org.springframework.web.bind.annotation.ControllerAdvice;
    6. import org.springframework.web.bind.annotation.ExceptionHandler;
    7. import org.springframework.web.bind.annotation.ResponseBody;
    8. import java.util.Map;
    9. import java.util.stream.Collectors;
    10. @ControllerAdvice
    11. @ResponseBody
    12. public class CtrIAdvice {
    13. @PostMapping("/test")
    14. public ResultVo testValited(@Validated @RequestBody Address address){
    15. return ResultVo.fail("失败了");
    16. }
    17. }

  • 相关阅读:
    【继RNN之后的一项技术】Transfomer 学习笔记
    【C++】stack&queue
    FebHost:CO域名在搜索引擎排名中是否高于.COM域名?
    基于51单片机的羽毛球计分器设计
    如何修改 node_modules 里的文件
    生产环境安装、配置、管理PostgreSQL数据库集群
    207、SpringBoot 整合 RabbitMQ 实现消息的发送 与 接收(监听器)
    (二十四)大数据实战——Flume数据流监控之Ganglia的安装与部署
    决策单调性优化
    抖音短视频带货的红利马上结束了+虚拟人能否代替直播带货?
  • 原文地址:https://blog.csdn.net/loliDapao/article/details/125558790