You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.3 KiB
42 lines
1.3 KiB
package com.utils;
|
|
|
|
import java.util.Set;
|
|
import javax.validation.ConstraintViolation;
|
|
import javax.validation.Validation;
|
|
import javax.validation.Validator;
|
|
import com.entity.EIException;
|
|
|
|
/**
|
|
* Hibernate Validator 校验工具类
|
|
*/
|
|
public class ValidatorUtils {
|
|
// 单例模式下的静态 Validator 实例
|
|
private static final Validator VALIDATOR;
|
|
|
|
static {
|
|
// 初始化 Hibernate Validator 工厂
|
|
VALIDATOR = Validation.buildDefaultValidatorFactory().getValidator();
|
|
}
|
|
|
|
/**
|
|
* 校验对象是否符合约束条件
|
|
*
|
|
* @param object 待校验的对象
|
|
* @param groups 校验组(可选),用于指定特定场景下的校验规则
|
|
* @throws EIException 如果校验失败,则抛出自定义异常 EIException
|
|
*/
|
|
public static void validateEntity(Object object, Class<?>... groups)
|
|
throws EIException {
|
|
// 获取校验结果集
|
|
Set<ConstraintViolation<Object>> violations = VALIDATOR.validate(object, groups);
|
|
|
|
// 如果校验结果不为空,表示存在错误
|
|
if (!violations.isEmpty()) {
|
|
// 获取第一个校验错误信息
|
|
ConstraintViolation<Object> violation = violations.iterator().next();
|
|
// 抛出自定义异常并附带错误信息
|
|
throw new EIException(violation.getMessage());
|
|
}
|
|
}
|
|
}
|