当前位置:网站首页>【无标题】
【无标题】
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("失败了");
}
}边栏推荐
- 2022年危险化学品经营单位安全管理人员考试题及在线模拟考试
- URL 介绍
- Who do you want to know when opening a stock account? Is it safe to open an account online?
- dat. GUI
- 关于游戏性能优化的一些感想
- openresty 负载均衡
- Airserver latest win64 bit personal screen projection software
- Redis data types and application scenarios
- Istio、eBPF 和 RSocket Broker:深入研究服务网格
- MySQL binlog cleanup
猜你喜欢

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

“35岁,公司老总,月薪2万送外卖“:时代抛弃你,连声再见都没有

mt管理器测试滑雪大冒险

Wechat personal small store one click opening assistant applet development
![Jielizhi Bluetooth headset quality control and production skills [chapter]](/img/ad/28e7461f8c5dc5c54a3f4da0c111ac.png)
Jielizhi Bluetooth headset quality control and production skills [chapter]

马赛克后挡板是什么?

Linux foundation - centos7 offline installation of MySQL

Yoga27 multidimensional all-in-one computer with excellent appearance and high-end configuration
![Jielizhi, production line assembly link [chapter]](/img/5f/9ea7fd3b93df1fd3ecbfc1b669c831.png)
Jielizhi, production line assembly link [chapter]

Commemorate becoming the first dayus200 tripartite demo contributor
随机推荐
Microservice stability management
window10安装wsl(一)(WslRegisterDistribution ERROR)
Compare the version number [double pointer to intercept the string you want]
[MySQL] basic use of explain and the function of each column
云信小课堂 | IM及音视频中常见的认知误区
Force buckle 710 Random numbers in the blacklist
[MySQL] database optimization method
2022 crane driver (limited to bridge crane) examination questions and simulation examination
Jielizhi, production line assembly link [chapter]
Matplotlib常用设置
[MySQL] index creation, viewing and deletion
AAAI22 | 结构标记和交互建模:用于图分类的“SLIM”网络
攻防演习防御体系构建之第三篇之建立实战化的安全体系
Linux foundation - centos7 offline installation of MySQL
plain framework的实际应用和扩展
物联网应用技术专业是属于什么类
plain framework的实际应用和扩展
Istio、eBPF 和 RSocket Broker:深入研究服务网格
每日三题 6.30(2)
微信个人小商店一键开通助手小程序开发