后台数据校验
- 导入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必须在一起)