Vaadin-flow 非关键验证仍返回 isValid=true

Ben*_*idt 3 validation vaadin vaadin-flow vaadin14

我们目前正在尝试实现一个非关键验证层,该层根据某些验证器检查字段输入,而不将表单标记为“无效”,而是标记为“不符合规范”,以便我们可以向用户突出显示字段。特别是,我们正在讨论具有下限和上限的数字范围,这些范围应突出显示输入字段作为某种“超出规格”警告。输入本身被认为是有效的,但“不符合规范”,而用户仍然应该能够保存数据。

这是一个例子:

  • 允许输入任何整数(验证),输入规范为 90 到 100 之间的整数(规范)。
  • 输入“abc”->输入类型错误->错误信息,不允许保存
  • 输入“95.1234”->输入类型错误->错误消息,不允许保存
  • 输入“85” -> 输入类型正确,输入有效,但不符合规范 -> 警告消息,仍允许保存
  • 输入“95” -> 输入类型正确,输入有效,符合规范 -> 允许保存

这意味着正常的活页夹验证仍应阻止保存,而附加的非关键验证应仅突出显示它,但不会阻止它。

我们目前在 vaadin 版本 14 中使用 vaadin 绑定器,并使用转换器和验证器的功能。是否有可能将我们的层添加到 vaadin 绑定器中,以便它能够在我们当前的使用情况下流畅地运行?或者除了正常的 vaadin Binder 使用之外,我们是否还必须构建自己的非关键验证层?在理想的情况下,我们会在转换和验证阶段后将其固定:

  1. 现场输入
  2. 类型转换
  3. 关键验证
  4. 非关键验证
  5. 输入节省

我希望我的描述足够了。如果有任何问题,请告诉我,我会尝试更详细地描述它。提前致谢。

Kno*_*bie 5

对于非 ErrorLevel.ERROR 类型的错误,使用自流程 14.7 以来可用的自定义 BinderValidationErrorHandler 是可能的。

请参阅介绍它的 PR 和示例https://github.com/vaadin/flow/pull/11384#issuecomment-879309037