java - 相关字段的验证

标签 java validation jakarta-ee

我们有一个验证系统,强制用户从一组相互关联的字段中的一组有效值中进行选择。

用户必须填写列表中的第一个值,他们选择的值决定了他们可以从第二个字段中选择哪一组值。他们在第二个字段中选择的值限制了第三个字段中的选择集。等等。

所有相互关联的字段都以树形结构组织,即用户从一个根字段开始,并且从根开始沿着树向下有各种路径,例如:

        Field1
       /      \
    Field2   Field7
      |        |
    Field3    etc
      |
    Field4
    /     \
 Field5   Field6

我们选择的实现方式是使用以下数据库模型:

ID
Parent ID
Field Type
Delimited Chain Data


1,null,Field1,F1-1
2,   1,Field2,F1-1|F2-1
3,   1,Field2,F1-1|F2-2
4,   1,Field2,F1-1|F2-3
5,   1,Field2,F1-1|F2-4
6,   2,Field3,F1-1|F2-1|F3-1
7,   2,Field3,F1-1|F2-1|F3-2
8,   3,Field3,F1-1|F2-2|F3-1
9,   3,Field3,F1-1|F2-2|F3-3
etc

数据值之间的关系是多对多的,例如Field3 中的多个值与 Field2 中的多个值相关。

这个结构可以让你做两件事:

  • 轻松查询特定字段的一组值,在该字段上方提供之前选择的数据。
  • 检查树中的给定路径是否包含其所有字段的有效值

但是,这个系统已经发展起来。其中一些字段有数千个可能的值。总共有大约30个字段。因此,当您在树中找出所有可能的有效值集时,就会出现数千万种组合。系统开始出现问题,值集的数据维护变得困难。

我的问题是:

  • 有人遇到过类似的相互关联的字段验证问题吗?你是怎么解决的?
  • 是否有任何产品或开源库(最好是基于 Java 的)可以帮助解决包含如此大量组合的类似问题?
  • 有人对替代实现策略有任何建议吗?

谢谢。

最佳答案

如何在 PMML 文档中描述您的规则并在每个节点实现具有谓词能力的访问者。

http://www.dmg.org/v4-0/TreeModel.html

PMML 涵盖了相当多的模型,但树模型可能最适合您的需求。

关于java - 相关字段的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1522103/

相关文章:

java - 尝试根据字符串数组列表的索引将双数组列表的总成本相加

java - 有 DNS 异常的黑莓模拟器

css - 除了 jigsaw 之外,还有其他 CSS 验证器吗?

rest - 如何关闭输入响应的 InputStream(jax.rs)

java - 为集合中的每个项目创建 Swing GUI 元素 - JAVA

java - 如何展开Eclipse 变量 View 中的所有节点?

validation - 在不覆盖核心 js 文件的情况下扩展 Magento 2 rules.js?

ruby-on-rails - Rspec & FactoryGirl 验收验证

javascript - 在不使用操作监听器的情况下使用 JSF 2.0 执行 AJAX

database - 在数据库中记录编辑历史的最佳方式是什么