后端validated校验

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

@Data
public class Address {

    @NotBlank(message = "province不能为空")
    private String province;

    private String city;
}


 
import com.example.demovalidator.Vo.ResultVo;
import com.example.demovalidator.enums.ErrorCode;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
 
import java.util.Map;
import java.util.stream.Collectors;
 
@ControllerAdvice
@ResponseBody
public class CtrIAdvice {
    @PostMapping("/test")
    public ResultVo testValited(@Validated @RequestBody Address address){
        return ResultVo.fail("失败了");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值