当前位置:网站首页>【无标题】
【无标题】
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("失败了");
}
}边栏推荐
- YOGA27多维一体电脑,兼具出色外观与高端配置
- Wechat personal small store one click opening assistant applet development
- [kotlin third party] coil koltin collaboration picture loading library coil glide like picture loading third party
- 物联网应用技术专业是属于什么类
- 2022年R1快开门式压力容器操作考题及答案
- [MySQL] basic use of explain and the function of each column
- Distance measurement - Hamming distance
- CKS CKA ckad change terminal to remote desktop
- [micro service sentinel] sentinelresourceaspect details
- CKS CKA ckad change terminal to remote desktop
猜你喜欢

【小程序】通过scroll-view组件实现左右【滑动】列表

rviz打开后如何显示实时2D地图

What is mosaic?

2022年R1快开门式压力容器操作考题及答案

from pip._ internal. cli. main import main ModuleNotFoundError: No module named ‘pip‘

mt管理器测试滑雪大冒险
![Jerry's records are powered by Vbat with a power supply voltage of 4.2V [chapter]](/img/3e/571d246d211a979e948dae1de56e93.png)
Jerry's records are powered by Vbat with a power supply voltage of 4.2V [chapter]

物联网开发零基础教程

Stm32f030f4 drives tim1637 nixie tube chip

2022年起重机司机(限桥式起重机)考试试题及模拟考试
随机推荐
Programming English vocabulary notebook
马赛克后挡板是什么?
Matplotlib常用设置
Future trend and development of neural network Internet of things
Typescript enumeration
纪念成为首个DAYUs200三方demo贡献者
Convergence and disposal suggestions of some Internet exposure surfaces
攻防演习防御体系构建之第三篇之建立实战化的安全体系
Matplotlib常用設置
Which securities company is better and which is safer to open a securities account
"35 years old, the boss of the company, with a monthly salary of 20000, give away takeout": the times abandoned you, not even saying goodbye
2022 crane driver (limited to bridge crane) examination questions and simulation examination
会声会影2022智能、快速、简单的视频剪辑软件
mysql ---- Oracle中的rownum转换成MySQL
【微服务|Sentinel】@SentinelResource详解
Redis数据类型和应用场景
Redis data types and application scenarios
玻璃马赛克
CADD课程学习(3)-- 靶点药物相互作用
认识--Matplotlib