向 ConstraintViolation 添加更多属性
Add more properties to ConstraintViolation
我是 Hibernate 验证器的新手,显然我只能从 ConstraintViolation 获取错误消息和 属性 路径。
我想做的是提供更多信息。例如如果我正在测试一个整数的最大值,其中我的最大限制不断变化,我想在错误消息和 属性 路径之外添加最大值:
- 错误信息:一些错误信息
- 最大值:30
属性 路径:some.property.path
public boolean isValid(final Integer integer, final ConstraintValidatorContext constraintValidatorContext) {
boolean isValid = true;
if(integer >= SomeClass.maxValue) {
context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate("some error message")
.addPropertyNode("some.property.path")
.addConstraintViolation();
isValid = false;
break;
}
return isValid;
}
知道怎么做吗?
我们的想法是使用动态负载功能,详细说明如下:https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-dynamic-payload。例如:
HibernateConstraintValidatorContext hibernateContext = context.unwrap(
HibernateConstraintValidatorContext.class
);
hibernateContext.withDynamicPayload( yourAdditionalInformation );
在文档的示例中,我们只包含一个简单的值,但您可以注入一个包含您需要的所有属性的 bean。
请注意,这是一个 Hibernate Validator-specific 特性(因此需要将上下文解包到它的 Hibernate Validator-specific 对应物)。
我是 Hibernate 验证器的新手,显然我只能从 ConstraintViolation 获取错误消息和 属性 路径。
我想做的是提供更多信息。例如如果我正在测试一个整数的最大值,其中我的最大限制不断变化,我想在错误消息和 属性 路径之外添加最大值:
- 错误信息:一些错误信息
- 最大值:30
属性 路径:some.property.path
public boolean isValid(final Integer integer, final ConstraintValidatorContext constraintValidatorContext) { boolean isValid = true; if(integer >= SomeClass.maxValue) { context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate("some error message") .addPropertyNode("some.property.path") .addConstraintViolation(); isValid = false; break; } return isValid; }
知道怎么做吗?
我们的想法是使用动态负载功能,详细说明如下:https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-dynamic-payload。例如:
HibernateConstraintValidatorContext hibernateContext = context.unwrap(
HibernateConstraintValidatorContext.class
);
hibernateContext.withDynamicPayload( yourAdditionalInformation );
在文档的示例中,我们只包含一个简单的值,但您可以注入一个包含您需要的所有属性的 bean。
请注意,这是一个 Hibernate Validator-specific 特性(因此需要将上下文解包到它的 Hibernate Validator-specific 对应物)。