我有一个Flex应用程序可以编辑一个中等复杂的对象,我想在编辑器的多个部分上进行一些客户端验证。编辑器是一组嵌套对象:
Form ->
TabNavigator ->
Tab1 ->
Component1.1
Component1.2
Tab2 ->
Component2.1
Component2.2
&c
SubmitButton
结构相当紧密地回应数据模型,UI就是项目所需要的,所以如果我不需要,我不会太快地重组那里的类 - 时间也是一个问题。我想要做的是为每个Component*
个实例设置验证器:
最好的方法是什么?
答案 0 :(得分:2)
创建表单时,创建一个数组以保存对表单中组件的所有验证器的引用。然后,当用户提交表单时,请检查所有输入是否符合您的标准。
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*/}
答案 1 :(得分:1)
在处理了这种用例之后,我终于决定编写自己的Form子类,它将所有元素的验证作为内置行为。
这个想法从那里发展很长,但是如果你很好奇,请查看我在bitbucket上发布的开源项目
http://bitbucket.org/rpathsync/smartform
SmartForms(和SmartFormItems)使用XML“Descriptor”处理表单创建和验证等。这样做的主要原因是允许服务器生成的表单,因为我们经常处理客户端没有先验知识的对象(我们的服务器是可插拔的,因此需要服务器提供的表单描述符)
那里有比你想要的更多的代码,但是那个存储库中的验证相关类可能对你很有用。
答案 2 :(得分:0)
我认为您已经检查过mx.validators.Validator类,而且它是各种子类,如
CreditCardValidator
CurrencyValidator
DateValidator
EmailValidator
NumberValidator
PhoneNumberValidator
RegExpValidator
SocialSecurityValidator
StringValidator
ZipCodeValidator