html頁面表單提交的對象數據或者接口對接,都需要對接收到的數據進行校驗(非空、長度、格式等等),jdk或hibernate都提供了對object對象的校驗,只需加上相應的註解即可。
引入pom
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
待校驗的實體類
public class StudentInfo {
@NotBlank(message="用戶名不能爲空",groups = { ValidGroup.class})
private String userName;
@NotBlank(message="年齡不能爲空",groups = { ValidGroup.class})
@Pattern(regexp="^[0-9]{1,2}$",message="年齡是整數",groups = { ValidGroup.class})
private String age;
@Pattern(regexp="^[0-9]{4}-[0-9]{2}-[0-9]{2}$",message="出生日期格式不正確",groups = { ValidGroup.class})
private String birthday;
@NotBlank(message="學校不能爲空",groups = { ValidGroup.class})
private String school;
}
BeanValidateUtil
public class BeanValidateUtil {
private static ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
public static <T> Map<String,StringBuffer> validate(T t) {
Map<String,StringBuffer> errorMap = null;
Validator validator = factory.getValidator();
Set<ConstraintViolation<T>> constraintViolations = validator.validate(t);
for (ConstraintViolation<T> constraintViolation : constraintViolations) {
//這裏循環獲取錯誤信息,可以自定義格式
property = constraintViolation .getPropertyPath().toString();
if(errorMap.get(property) != null){
errorMap.get(property).append("," + constraintViolation .getMessage());
}else{
StringBuffer sb = new StringBuffer();
sb.append(constraintViolation .getMessage());
errorMap.put(property, sb);
}
}
return errorMap;
}
public static <T> Map<String,StringBuffer> validateGroup(T t, Class<?> classType) {
Map<String,StringBuffer> errorMap = null;
Validator validator = factory.getValidator();
Set<ConstraintViolation<T>> constraintViolations = validator.validate(t, classType);
for (ConstraintViolation<T> constraintViolation : constraintViolations) {
//這裏循環獲取錯誤信息,可以自定義格式
property = constraintViolation .getPropertyPath().toString();
if(errorMap.get(property) != null){
errorMap.get(property).append("," + constraintViolation .getMessage());
}else{
StringBuffer sb = new StringBuffer();
sb.append(constraintViolation .getMessage());
errorMap.put(property, sb);
}
}
return erroMap;
}