實現hibernate 的validator校驗


Validator校驗分為快速校驗和全校驗。
快速校驗是當遇到第一個參數不符合條件時,立即停止校驗程序,將校驗不通過的信息返回到前端;
全校驗是將前端傳過來的參數全部進行校驗,將所有不通過校驗的信息一起返回到前端
實現方式:

第一步:在pom.xml中添加依賴

//validate的依賴
<dependency>  
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate-validator</artifactId>
	<version>6.0.11.Final</version>
</dependency>
//java的map轉bean的工具類的依賴
  <dependency>  
    		<groupId>commons-beanutils</groupId>  
    		<artifactId>commons-beanutils</artifactId>  
   	 		<version>1.8.3</version>  
</dependency>  

  


第二步:再java bean上寫上校驗規則的注解(更多思維校驗規則可百度搜索)
例如:紅色部分為檢驗規則,message為校驗不通過時返回前端的信息

第三步:
編寫validator的工具類
思路:獲取validator對象,將需要校驗的bean傳入validator對象的validate方法中,返回的數據既是校驗不通過的集合。獲取validator對象時,有兩種方式,failFast(true)時,獲得的是快速校驗的對象,failFast(false)時,獲得是全校驗對象。
Validator validator1=
Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
Validator validator2=
Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator();
代碼參考:

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;

import org.apache.commons.beanutils.BeanUtils;
import org.hibernate.validator.HibernateValidator;

public class DomainValidatorUtils {
	
	//獲取validator對象
	private static Validator validator1=
			Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
	private static Validator validator2=
			Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator();
	
	public static <T> Set<ConstraintViolation<T>> validateFast(Map<String, String> map,T domain) throws Exception {
		BeanUtils.populate(domain, map);
		System.out.println("domain.toString()"+domain.toString());
		Set<ConstraintViolation<T>> validateResult= validator1.validate(domain);
		if(validateResult.size()>0) {
			System.out.println(validateResult.iterator().next().getMessage()+",校驗失敗");
		}
		
		return validateResult;
	}
	public static <T> Set<ConstraintViolation<T>> validateAll(Map<String, String> map,T domain) throws Exception {
		BeanUtils.populate(domain, map);
		System.out.println("domain.toString()"+domain.toString());
		Set<ConstraintViolation<T>> validateResult= validator2.validate(domain);
		if(validateResult.size()>0) {
			Iterator<ConstraintViolation<T>> it=validateResult.iterator();
				while(it.hasNext()) {
				System.out.println(it.next().getMessage()+",校驗失敗");
				}
		}
		
		return validateResult;
	}

}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM