errorMessages) {
this.errorMessages = errorMessages;
+ return this;
}
+ public BeanValidationResult addErrorMessage(ErrorMessage errorMessage){
+ this.errorMessages.add(errorMessage);
+ return this;
+ }
+
+ /**
+ * 错误消息,包括字段名(字段路径)和消息内容
+ */
public static class ErrorMessage {
/**
* 属性字段名称
@@ -62,5 +80,13 @@ public class BeanValidationResult {
public void setMessage(String message) {
this.message = message;
}
+
+ @Override
+ public String toString() {
+ return "ErrorMessage{" +
+ "propertyName='" + propertyName + '\'' +
+ ", message='" + message + '\'' +
+ '}';
+ }
}
}
diff --git a/hutool-extra/src/main/java/cn/hutool/extra/validation/BeanValidationUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/validation/ValidationUtil.java
similarity index 76%
rename from hutool-extra/src/main/java/cn/hutool/extra/validation/BeanValidationUtil.java
rename to hutool-extra/src/main/java/cn/hutool/extra/validation/ValidationUtil.java
index d35abf93b..1118a5f1f 100644
--- a/hutool-extra/src/main/java/cn/hutool/extra/validation/BeanValidationUtil.java
+++ b/hutool-extra/src/main/java/cn/hutool/extra/validation/ValidationUtil.java
@@ -1,7 +1,6 @@
package cn.hutool.extra.validation;
import cn.hutool.extra.validation.BeanValidationResult.ErrorMessage;
-import org.hibernate.validator.HibernateValidator;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
@@ -10,17 +9,25 @@ import java.util.Set;
/**
- * java bean 校验工具类
+ * java bean 校验工具类,此工具类基于validation-api(jakarta.validation-api)封装
+ *
+ * 在实际使用中,用户需引入validation-api的实现,如:hibernate-validator
+ * 注意:hibernate-validator还依赖了javax.el,需自行引入。
*
* @author chengqiang
*/
-public class BeanValidationUtil {
+public class ValidationUtil {
- private static final Validator validator = Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator();
+ private static final Validator validator;
+
+ static {
+ validator = Validation.buildDefaultValidatorFactory().getValidator();
+ }
/**
* 校验对象
*
+ * @param Bean类型
* @param bean bean
* @param groups 校验组
* @return {@link Set}
@@ -29,20 +36,10 @@ public class BeanValidationUtil {
return validator.validate(bean, groups);
}
- /**
- * 校验对象
- *
- * @param bean bean
- * @param groups 校验组
- * @return {@link BeanValidationResult}
- */
- public static BeanValidationResult warpValidate(T bean, Class>... groups) {
- return warpBeanValidationResult(validate(bean, groups));
- }
-
/**
* 校验bean的某一个属性
*
+ * @param Bean类型
* @param bean bean
* @param propertyName 属性名称
* @return {@link Set}
@@ -51,6 +48,18 @@ public class BeanValidationUtil {
return validator.validateProperty(bean, propertyName, groups);
}
+ /**
+ * 校验对象
+ *
+ * @param Bean类型
+ * @param bean bean
+ * @param groups 校验组
+ * @return {@link BeanValidationResult}
+ */
+ public static BeanValidationResult warpValidate(T bean, Class>... groups) {
+ return warpBeanValidationResult(validate(bean, groups));
+ }
+
/**
* 校验bean的某一个属性
*
@@ -69,9 +78,8 @@ public class BeanValidationUtil {
* @return {@link BeanValidationResult}
*/
private static BeanValidationResult warpBeanValidationResult(Set> constraintViolations) {
- BeanValidationResult result = new BeanValidationResult();
+ BeanValidationResult result = new BeanValidationResult(constraintViolations.isEmpty());
for (ConstraintViolation constraintViolation : constraintViolations) {
- result.setSuccess(Boolean.FALSE);
ErrorMessage errorMessage = new ErrorMessage();
errorMessage.setPropertyName(constraintViolation.getPropertyPath().toString());
errorMessage.setMessage(constraintViolation.getMessage());
diff --git a/hutool-extra/src/main/java/cn/hutool/extra/validation/package-info.java b/hutool-extra/src/main/java/cn/hutool/extra/validation/package-info.java
index 286124201..fd0d5f94a 100644
--- a/hutool-extra/src/main/java/cn/hutool/extra/validation/package-info.java
+++ b/hutool-extra/src/main/java/cn/hutool/extra/validation/package-info.java
@@ -1,5 +1,5 @@
/**
- * java bean 校验工具
+ * 基于JSR-303标准的校验工具类,封装了javax.validation的API
*
* @author chengqiang
*/
diff --git a/hutool-extra/src/test/java/cn/hutool/extra/validation/BeanValidatorUtilTest.java b/hutool-extra/src/test/java/cn/hutool/extra/validation/BeanValidatorUtilTest.java
index b8a3cfdd0..395f3ad7d 100644
--- a/hutool-extra/src/test/java/cn/hutool/extra/validation/BeanValidatorUtilTest.java
+++ b/hutool-extra/src/test/java/cn/hutool/extra/validation/BeanValidatorUtilTest.java
@@ -1,6 +1,6 @@
package cn.hutool.extra.validation;
-import cn.hutool.core.lang.Assert;
+import org.junit.Assert;
import org.junit.Test;
import javax.validation.constraints.NotBlank;
@@ -39,13 +39,15 @@ public class BeanValidatorUtilTest {
@Test
public void beanValidatorTest() {
- BeanValidationResult result = BeanValidationUtil.warpValidate(new TestClass());
- Assert.isTrue(result.getSuccess());
+ BeanValidationResult result = ValidationUtil.warpValidate(new TestClass());
+ Assert.assertFalse(result.isSuccess());
+ Assert.assertEquals(2, result.getErrorMessages().size());
}
@Test
public void propertyValidatorTest() {
- BeanValidationResult result = BeanValidationUtil.warpValidateProperty(new TestClass(), "name");
- Assert.isTrue(result.getSuccess());
+ BeanValidationResult result = ValidationUtil.warpValidateProperty(new TestClass(), "name");
+ Assert.assertFalse(result.isSuccess());
+ Assert.assertEquals(1, result.getErrorMessages().size());
}
}