diff --git a/continew-starter-core/pom.xml b/continew-starter-core/pom.xml index 1db90fbc..632a5eae 100644 --- a/continew-starter-core/pom.xml +++ b/continew-starter-core/pom.xml @@ -23,6 +23,13 @@ spring-boot-configuration-processor + + + org.hibernate.validator + hibernate-validator + true + + net.dreamlu diff --git a/continew-starter-core/src/main/java/top/continew/starter/core/util/validate/ValidationUtils.java b/continew-starter-core/src/main/java/top/continew/starter/core/util/validate/ValidationUtils.java index 8518e2f2..e16f6412 100644 --- a/continew-starter-core/src/main/java/top/continew/starter/core/util/validate/ValidationUtils.java +++ b/continew-starter-core/src/main/java/top/continew/starter/core/util/validate/ValidationUtils.java @@ -16,9 +16,14 @@ package top.continew.starter.core.util.validate; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.ReflectUtil; +import cn.hutool.extra.spring.SpringUtil; +import jakarta.validation.ConstraintViolation; import top.continew.starter.core.exception.BadRequestException; +import java.util.Set; import java.util.function.BooleanSupplier; /** @@ -173,4 +178,21 @@ public class ValidationUtils extends Validator { public static void throwIf(BooleanSupplier conditionSupplier, String template, Object... params) { throwIf(conditionSupplier, CharSequenceUtil.format(template, params), EXCEPTION_TYPE); } + + /** + * JSR 303 校验 + * + * @param obj 被校验对象 + * @param groups 分组 + */ + public static void validate(Object obj, Class... groups) { + jakarta.validation.Validator validator = SpringUtil.getBean(jakarta.validation.Validator.class); + Set> violations = validator.validate(obj, groups); + if (CollUtil.isEmpty(violations)) { + return; + } + throw ReflectUtil.newInstance(EXCEPTION_TYPE, violations.stream() + .map(ConstraintViolation::getMessage) + .findFirst()); + } }