ValidatorUtil字段验证工具类

这篇文章介绍了ValidatorUtil类,用于在Java中进行对象校验,利用Javax.validation库处理ConstraintViolation异常,并提供针对特定字段的排除功能。
摘要由CSDN通过智能技术生成

字段验证工具类

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值