• 【无标题】


    想要使用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. }

  • 相关阅读:
    「SpringCloud」08 Config分布式配置中心
    Mac系统配置k8s completion命令补全
    HCIA-HarmonyOS设备开发V2.0证书
    HttpClient笔记
    C#之网络
    【C++STL基础入门】list的运算符重载和关于list的算法
    自学Python只看这个够不够........?
    css3新单位vw、vh、vmin、vmax的使用介绍
    除了参数,ref关键字还可以用在什么地方?
    什么是知识付费?未来的发展趋势如何?
  • 原文地址:https://blog.csdn.net/loliDapao/article/details/125558790