java - 向 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 的功能(因此需要将上下文解包到其特定于 Hibernate Validator 的对应项)。
推荐阅读
- python-3.x - 尝试在 Pycharm 中安装 Scrapy,不断出现错误:命令“python setup.py egg_info”失败,错误代码为 1
- css - 按钮中倾斜的伪元素周围的奇怪轮廓
- c - 如何在 Visual Studio 代码中添加 gtk lib?
- rest - 路径参数的语义招摇错误
- flutter - Flutter for Web - 有没有办法实现类似桌面的文本框?
- python - 数组在视图django中转换为字符串
- sql - 无法使用按功能分组解决问题
- angular - 如何使用复选框将类添加到输入中?
- python - 计算有多少单词具有相同的开头和结尾字母/Python
- c++builder - C++ Builder 10.2 如何支持Windows 10 App Mode