后端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不会生效
普通模式(默认是这个模式):会校验完所有的属性,然后返回所有的验证失败信息。
快速失败模式:只要有一个验证失败,则返回。
通常在实际开发中,我们需要配置快速失败模式,快速失败模式的配置方式:
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("失败了");}
}
后端validated校验相关推荐
- SpringBoot后端数据校验实战
本文从本人博客搬运,原文格式更加美观,可以移步原文阅读:SpringBoot后端数据校验实战 一般我们会在Controller的接口中对前端传递的参数做数据校验,这是一个后端开发人员的基本素养 在Sp ...
- 【工具】JSR-303后端参数校验框架的使用方法及说明
[工具]JSR-303后端参数校验框架的使用方法及说明 文章目录 [工具]JSR-303后端参数校验框架的使用方法及说明 1. 统一校验需求 2. 使用说明 2.1 引入依赖 2.2 规则说明 2.3 ...
- 实现Java后端数据校验
每次我们在搭建一个开源项目的首要任务包括:项目的统一异常处理.统一结果封装以及做项目的数据校验,在前后端分离的情况下,不仅前端需要做数据校验,同样后端也要实现,前端主要使用一些类似与jQuery Va ...
- SpringBoot - 后端数据校验的实现
SpringBoot - 后端数据校验的实现 通常来说,为了提高系统运行效率,都会在前端进行数据校验,但后端的数据校验仍然必不可少,因为用户还是可能在获取数据接口后手动传入非法数据,所以后端还是需要做 ...
- 后端数据校验之JSR303
后端数据校验之JSR303 JSR303的使用 分组校验 自定义校验规则 一般在项目开发中,对数据准确性的校验必不可少,除了前端对数据进行校验,后端也要对数据进行校验. JSR303的使用 JSR30 ...
- SpringBoot中后端数据校验
文章目录 1.为什么后端要进行数据校验? 2.怎么使用数据校验?(要添加对应依赖) 实现对手机号码的数据校验: 入参对象包含集合时,怎么对集合中的每个属性进行校验 1.为什么后端要进行数据校验? 如果 ...
- java 后端校验_如何实现Java后端数据校验?看这篇就足够!
前言 每次我们在搭建一个开源项目的首要任务包括:项目的统一异常处理.统一结果封装以及做项目的数据校验,在前后端分离的情况下,不仅前端需要做数据校验,同样后端也要实现,前端主要使用一些类似与jQuery ...
- 参数校验放在controller还是service_@Validated校验的实践
spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理. 一.简单使用 1.Controller上开启验证 2.DTO上申明被验证的字段 a. ...
- springboot后端数据校验以及异常处理
文章目录 常用校验工具包 1.package javax.validation.constraints 包 2.package org.hibernate.validator.constraints; ...
最新文章
- c++判断双击间隔_录井工常见故障判断处理
- android 图片加载库 Glide 的使用介绍
- 精心收集汇总的Python学习资源(书籍+工具+视频),强烈建议收藏!
- 【Qt】数据库实战之QSqlRelationalTableModel
- 浙大计算机学院朱建科,浙江大学计算机科学与技术学院导师介绍:朱建科
- 1114. 按序打印
- JUnit4单元测试、JUnit4使用详解、assertThat用法
- SQLite cursor.moveToNext()
- C++执行shell命令
- Cocos2d-x CocosBuilder使用教程(一)HelloCocosBuilder
- 下载 嵌入式qt实战教程pdf_嵌入式QT基础视频教程免费分享!
- armv7l安卓刷linux,技术讲解-安卓APK快速生成后门(实现手机入侵)
- 【Android UI】ListView系列一(基础篇)
- 微信小程序 家校通 中小学家校联系电子作业系统
- 三坐标测圆的直径怎么测_大半径短圆弧用三坐标测不准?知道为什么吗?
- SIMetrix导入MOS管SPICE参数进行仿真的快速方法
- 迅雷离线配合Internet Download Manager下载ED2K链接
- SQL字段名显示蓝色的原因及其解决办法
- fpga时序逻辑(三段式状态机模板、rom实现、边沿检测)
- 关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding