在JavaFX中使用此输入验证方法的任何缺点?

时间:2015-12-17 09:04:31

标签: validation javafx

由于在JavaFX中似乎没有输入验证方法,我在考虑如何在当前项目中以干净的方式进行。

这是我的想法:

  1. 所有验证规则都是正则表达式(如“min-length”,“not-empty”,“only-numbers”等),它们存储在.properties文件中 示例:validationrules_only_numbers="[0-9]+"
  2. 我在.fxml文件中使用此验证,为任何应验证的输入定义<properties>标记 例: <ChoiceBox><properties rules="%validationrules_only_numbers"/></ChoiceBox>
  3. 在一个抽象/父控制器中,我编写了一个方法,它获取当前AnchorPane的所有子节点并对它们进行迭代(假设在用户单击“确定”后提交表单)。所有具有验证规则的子项都将传递给另一个方法,该方法取决于输入字段的类型,将验证规则应用于输入。
  4. 然后突出显示所有带有验证错误的控件。
  5. 我个人喜欢这个想法:

    • 只需将验证规则添加到.properties文件
    • 即可轻松扩展验证规则
    • 规则在.fxml文件中分配
    • 所有控制器(扩展抽象/父控制器)不需要执行任何验证任务

    我不喜欢/不确定它是否在现实中运作良好:

    • 验证规则都是正则表达式,我不知道它是否适用于所有输入字段(但我不介意编码“hacks”以使其工作,因为我只会这样做一次父控制器)
    • 我必须使用instanceof检查控件,以便为此特定控件正确应用规则,因为并非所有控件都有getText()方法,并且输入需要以其他方式验证
    • 不知道是否有更好的方法将规则放在.fxml文件中,然后使用<properties>

    你有什么想法?我在这里缺少什么重要的东西?

    我正在谷歌上搜索这个话题好几天,似乎没有像我们熟悉的网络开发社区那样的非常好的解决方案。

1 个答案:

答案 0 :(得分:1)

在重新发明轮子之前,您可能需要查看ControlsFX包中包含的验证框架。也许你可以将它与你的想法结合起来。