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