import com.pasc.medical.core.base.exception.BusinessException;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.ReflectionUtils;
import javax.validation.*;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Set;
public class ValidateUtils {
/**
* 校验 Bean
* @param t
* @param <T>
* @return
*/
public static <T> String validate(T t){
ValidatorFactory vFactory = Validation.buildDefaultValidatorFactory();
Validator validator = vFactory.getValidator();
Set<ConstraintViolation<T>> set = validator.validate(t);
if (set.size() > 0) {
StringBuilder validateError = new StringBuilder();
int i = 1;
for (ConstraintViolation<T> val : set) {
validateError.append(val.getMessage());
if (i < set.size()) {
validateError.append(",");
}
i++;
}
return validateError.toString();
}
return null;
}
/**
* 校验 List 集合
* @param list
* @param param
* @param paramName
* @param <T>
*/
public static <T> void validate(List<T> list,String param,String paramName){
if(CollectionUtils.isEmpty(list)){
throw new BusinessException("101401","校验参数为空");
}
String validateStr;
StringBuilder validateBuilder = new StringBuilder();
for(T t : list){
validateStr = validate(t);
if(StringUtils.isNotBlank(validateStr)){
validateBuilder.append(paramName).append(":")
.append(getParamValue(t,param)).append(",")
.append(validateStr.toString()).append("\n");
}
}
// 有异常直接抛出异常
if(validateBuilder.length() > 0){
throw new BusinessException("101402",validateBuilder.toString());
}
}
public static <T> Object getParamValue(T t,String param){
Field field = ReflectionUtils.findField(t.getClass(),param);
field.setAccessible(true);
Object value = ReflectionUtils.getField(field,t);
return value;
}
}
ValidateUtils
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 2020年1月15日,大型诗歌朗诵艺术盛典——《朗诵中国》,将于北京电视台大剧院盛大开启! 朗诵,作为母语的花环,...