当前位置:网站首页>【无标题】
【无标题】
2022-07-01 22:54:00 【loliDapao】
想要使用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不会生效
普通模式(默认是这个模式):会校验完所有的属性,然后返回所有的验证失败信息。
快速失败模式:只要有一个验证失败,则返回。
通常在实际开发中,我们需要配置快速失败模式,快速失败模式的配置方式:
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("失败了");
}
}
边栏推荐
猜你喜欢
Future trend and development of neural network Internet of things
Notes on problems - /usr/bin/perl is needed by mysql-server-5.1.73-1 glibc23.x86_ sixty-four
Aaai22 | structural tagging and interaction modeling: a "slim" network for graph classification
What is mosaic?
Matplotlib常用图表
RPA: Bank digitalization, business process automation "a small step", and loan review efficiency "a big step"
flutter Unable to load asset: assets/images/888. png
云信小课堂 | IM及音视频中常见的认知误区
[micro service sentinel] sentinel integrates openfeign
从第三次技术革命看企业应用三大开发趋势
随机推荐
众昂矿业:发展以氟化工为主的特色化工产业具有先天优势
Treatment of insufficient space in the root partition of armbain system
马赛克后挡板是什么?
YOGA27多维一体电脑,兼具出色外观与高端配置
AAAI22 | 结构标记和交互建模:用于图分类的“SLIM”网络
Typescript enumeration
Notes to problems - file /usr/share/mysql/charsets/readme from install of mysql-server-5.1.73-1 glibc23.x86_ 64 c
Matplotlib常用設置
[applet] realize the left and right [sliding] list through the scroll view component
What is the relationship between modeling and later film and television?
SWT / anr problem - SWT causes kernel fuse deadlock
Jielizhi, production line assembly link [chapter]
云信小课堂 | IM及音视频中常见的认知误区
【微服务|Sentinel】@SentinelResource详解
玻璃马赛克
纪念成为首个DAYUs200三方demo贡献者
每日三题 6.30
神经网络物联网的未来趋势与发展
内存泄露和内存溢出的区别是什么?
AirServer最新Win64位个人版投屏软件