问题描述
我有一个输入字段图,我想通过在运行时创建动态约束来使用JSR-303进行验证。
比方说,我的地图结构如下:
name: Foo
description: Foo description
现在,如果我在一组配置中存储了一组规则,则说:
name:
required: true
minLength: 3
maxLength: 30
description:
required: false
maxLength: 200
我想使用在运行时根据上述配置创建的约束来验证输入映射。我知道我们可以create custom ConstraintMapping
s using Hibernate Validator进行以下操作(示例取自Hibernate Validator文档):
HibernateValidatorConfiguration configuration = Validation
.byProvider(HibernateValidator.class)
.configure();
ConstraintMapping constraintMapping = configuration.createConstraintMapping();
constraintMapping
.type(Car.class)
.property("manufacturer",FIELD)
.constraint( new NotNullDef())
.property("licensePlate",FIELD)
.ignoreAnnotations(true)
.constraint(new NotNullDef())
.constraint(new SizeDef().min(2).max(14))
Validator validator = configuration.addMapping(constraintMapping)
.buildValidatorFactory()
但是显然,这不适用于java.util.Map
,因为地图不是JavaBean。那么我该怎么做呢?我考虑过的几件事(与每种方法有关):
- 要在运行时使用ByteBuddy或类似的东西创建类,并使用它来使用Hibernate Validator进行验证(听起来像是过分杀伤)
- 要使用一系列
if
条件进行手动验证并抛出ConstraintViolationException
(我将在这里重新发明很多轮子)
我想了解在这种情况下您会怎么做。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)