字段验证工具类
package com.aa.bb.cc.common.utils;
import com.aa.bb.cc.common.exception.BusinessException;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;
public class ValidatorUtil {
private static Validator validator;
static {
validator = Validation.buildDefaultValidatorFactory().getValidator();
}
/**
* 校验对象
*
* @param object 待校验对象
* @param groups 待校验的组
* @throws BusinessException 校验不通过,则报RRException异常
*/
public static String validateEntity(Object object, Class<?>... groups)
throws BusinessException {
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
if (!constraintViolations.isEmpty()) {
StringBuilder msg = new StringBuilder();
for (ConstraintViolation<Object> constraint : constraintViolations) {
msg.append(constraint.getMessage()).append("<br>");
}
return msg.toString();
}
return null;
}
/**
* 校验对象
* @param entity
* @param exceptFields
* @param <T>
*/
public static <T> void validate(T entity, String... exceptFields){
Set<ConstraintViolation<T>> set=validator.validate(entity);
if(CollectionUtils.isNotEmpty(set)){
for (ConstraintViolation<T> item : set) {
String field = item.getPropertyPath().toString();
if (!isExcept(field, exceptFields)) {
String message = item.getMessage();
throw new BusinessException(1,message);
}
}
}
}
/**
* 判断属性是否属于例外属性列表
* @param field
* @param exceptFields
* @return
*/
private static boolean isExcept(String field, String... exceptFields) {
if (exceptFields == null)
return false;
for (String obj : exceptFields) {
if (StringUtils.isNotBlank(obj) && field.indexOf(obj) >= 0) {
return true;
}
}
return false;
}
}