java使用validator進行校驗

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;
    }

發佈了402 篇原創文章 · 獲贊 60 · 訪問量 71萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章