后台数据校验

  1. 导入jar包

<dependencys>
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.1.0</version></dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
</dependencys>

2.编写工具类

public class Validator {
/**
*
* Description:校验实体类中的属性是否正确 <br/>
*
* @author 王星宇
* @param errorResult:BindingResult类型
* @return:如果返回值为null,则代表数据完全正确;如果不为null,则返回的是一个封装错误信息map集合
*/
public static Map<String, Object> fieldValidate(BindingResult errorResult) {
Map<String, Object> errorMap = null;
boolean flag = errorResult.hasErrors();
if (flag) {// 数据有错
errorMap = new HashMap<String, Object>();
// 将字段对应的错误信息答应出来
List<FieldError> errorList = errorResult.getFieldErrors();
for (FieldError fieldError : errorList) {
// 1、获取实体类中的属性名
String fieldName = fieldError.getField();
// 2、当数据不满足匹配规则时,获取错误提示信息
String errorMessage = fieldError.getDefaultMessage();
System.out.println(fieldName + "=" + errorMessage);
errorMap.put(fieldName, errorMessage);
}
}
return errorMap;
}
}

3.在javabean中加注解

下面是常用注解

@AssertTrue //用于boolean字段,该字段只能为true  
@AssertFalse//该字段的值只能为false  
@CreditCardNumber//对信用卡号进行一个大致的验证  
@DecimalMax//只能小于或等于该值  
@DecimalMin//只能大于或等于该值  
@Digits(integer=2,fraction=20)//检查是否是一种数字的整数、分数,小数位数的数字。  
@Email//检查是否是一个有效的email地址  
@Future//检查该字段的日期是否是属于将来的日期  
@Length(min=,max=)//检查所属的字段的长度是否在min和max之间,只能用于字符串  
@Max//该字段的值只能小于或等于该值  
@Min//该字段的值只能大于或等于该值  
@NotNull//不能为null  
@NotBlank//不能为空,检查时会将空格忽略  
@NotEmpty//不能为空,这里的空是指空字符串  
@Null//检查该字段为空  
@Past//检查该字段的日期是在过去  
@Size(min=, max=)//检查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等  
@URL(protocol=,host,port)//检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件  
@Valid//该注解只要用于字段为一个包含其他对象的集合或map或数组的字段,或该字段直接为一个其他对象的引用,  
        //这样在检查当前对象的同时也会检查该字段所引用的对象

4.在controller层写方法(@Valid和BindingResult必须在一起)

原文地址:https://www.cnblogs.com/wxy0715/p/12391205.html