Apache flex 什么';验证复杂Flex表单的最佳方法是什么?

Apache flex 什么';验证复杂Flex表单的最佳方法是什么?,apache-flex,flex3,validation,Apache Flex,Flex3,Validation,我有一个编辑中等复杂对象的Flex应用程序,我想在编辑器的多个部分上进行一些客户端验证。编辑器是一组嵌套对象: Form -> TabNavigator -> Tab1 -> Component1.1 Component1.2 Tab2 -> Component2.1 Component2.2 &c SubmitB

我有一个编辑中等复杂对象的Flex应用程序,我想在编辑器的多个部分上进行一些客户端验证。编辑器是一组嵌套对象:

Form ->
    TabNavigator ->
        Tab1 ->
            Component1.1
            Component1.2
        Tab2 ->
            Component2.1
            Component2.2
    &c
    SubmitButton
该结构与数据模型非常接近,UI是项目所需要的,因此,如果不需要的话,我不会太快地重构那里的类——时间也是一个问题。我要做的是为每个
组件*
实例提供验证器:

  • 在相关UI元素上显示验证工具提示和UI提示
  • 当表单的任何部分无效时,禁用SubmitButton
  • (可选)提供足够的信息,以便在表单中显示错误消息

最好的方法是什么?

我想您已经检查了类,以及它的各种子类,如

  • CreditCardValidator
  • CurrencyValidator
  • DateValidator
  • EmailValidator
  • NumberValidator
  • PhoneNumberValidator
  • RegExpValidator
  • SocialSecurityValidator
  • StringValidator
  • ZipCodeValidator

创建表单时,创建一个数组以保存对表单中组件的所有验证程序的引用。然后,当用户提交表单时,检查所有输入是否符合您的标准

if ((Validator.validateAll(validatorArr) as Array).length != 0){
  Alert.show("There are errors on the form.  Please correct before saving.", "Form Errors");}
else { /* do something*/}

在多次处理此类用例之后,我最终决定编写自己的表单子类,作为一种内置行为提供对所有元素的验证

这个想法发展了很长一段路,但是如果你好奇的话,可以看看我在bitbucket上发布的开源项目

SmartForms(和SmartFormItems)使用XML“描述符”处理表单创建和验证等。这样做的主要原因是允许服务器生成表单,因为我们经常处理客户机不知道的对象(我们的服务器是可插入的,因此需要服务器提供的表单描述符)


那里的代码可能比您想要的要多得多,但您可能会对该存储库中与验证相关的类感兴趣。

是的。我对Flex 101不感兴趣;我想要一个设计的想法,这将使它能够很容易地扩展表单,同时保留所有子表单和杂项的深入验证。