SpringBoot(十六)validator后台校验
validator后台校验
在 Spring Boot 中,可以使用 Validator 来验证表单数据和其他输入数据的有效性。下面是使用 Validator 的步骤:
一、注解
通常来说,在前端提交数据到后端的时候,会进行一定的校验,比如使用jqueryvalidatejs或者当前留下的Vue框架中的vue-validator进行校验。但是这样还会有一定的风险,所以我们会在后台对数据格式进行校验。在Java或Hibernate中都提供了一些校验的注解,本节学习使用后台校验数据格式。 首先来看供我们使用的后台校验的注解,分别说明如下。
@Valid:被注释的元素是一个对象,需要检查此对象的所有字段值。
@Null:被注释的元素必须为null。
@NotNull:被注释的元素必须不为null
@AssertTrue:被注释的元素必须为true
@AssertFalse:被注释的元素必须为false
@Min(value):被注释的元素必须是一个数字,其值必须大于等于指定的最小值。
@Max(value):被注释的元素必须是一个数字,其值必须小于等于指定的最大值。
@DecimalMin(value):被注释的元素必须是一个数字,其值必须大于等于指定的最小值。
@DecimalMax(value):被注释的元素必须是一个数字,其值必须小于等于指定的最大值。
@Size(maxmin):被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction):被注释的元素必须是一个数字,其值必须在可接受的范围内。
@Past:被注释的元素必须是一个过去的日期。
@Future:被注释的元素必须是一个将来的日期。
@Pattern(value):被注释的元素必须符合指定的正则表达式。
@Email:被注释的元素必须是电子邮箱地址。
@Length(min=max=):被注释的字符串的大小必须在指定的范围内。
@NotEmpty:被注释的字符串必须非空。
@Range(min=max=):被注释的元素必须在合适的范围内。
@NotBlank:被注释的字符串必须非空。
@URL(protocol=,host=port=regexp=flags=):被注释的字符串必须是一个有效的URL。
@CreditCardNumber:被注释的字符串必须通过Luhn校验算法,银行卡、信用卡等号码一般 都用Luhn 计算合法性。
@ScriptAssert(lang=script=alias=):要有Java ScriptingAPI,即JSR223(“Scriptingfor the JavaTMPlatform”)的实现。
@SafeHtml(whitelistType=additionalTags=):classpath中要有jsoup包。
@NotNull、@NotEmpty、@NotBlank三个注解的区别如下。
@NotNull:任何对象的value不能为null。
@NotEmpty:集合对象的元素不为0,即集合不为空,也可以用于字符串不为null List item
@NotBlank:只能用于字符串不为null,并且字符串trim)以后length要大于0。
二、集成步骤
1、导入依赖
org.springframework.boot spring-boot-starter-validation
2、实体类注解
@Data
public class Person {@NotNull //该属性不能为空private String name;
@NumberFormat //要符合数值类型private Integer age;
@Email //被注解的元素必须是电子邮箱地址格式。private String email;
}
3、controller参数使用
创建一个TestController进行测试。使用BindingResult类的getAllErrors()方法可以获取不符合校验的提示集合,具体怎么展示可以根据项目情况决定,这里是将错误信息拼接成字符串返回前台:
@PostMapping("/validator")
//@Valid:被注解的元素是一个对象,需要检查此对象的所有字段值。
//BindingResult:使用BindingResult类的getAllErrors()方法可以获取不符合校验的提示集合,
// 具体怎么展示可以根据项目情况决定,这里是将错误信息拼接成字符串返回前台:
public StringBuffer postTest2(@RequestBody @Valid Person person, BindingResult bindingResult){StringBuffer stringBuffer= new StringBuffer();if(bindingResult.hasErrors()){List list = bindingResult.getAllErrors();//不符合校验的提示集合list.forEach(error->{stringBuffer.append(error.getDefaultMessage());//不符合校验的信息,append:字符串拼接stringBuffer.append(" || ");System.out.println(error.getDefaultMessage());});}System.out.println("postTest2");return stringBuffer;//这里是将错误信息拼接成字符串返回前台
}
4、测试
标签:
相关文章
-
无相关信息