Apache flex Flex 3.5验证程序错误消息重复

Apache flex Flex 3.5验证程序错误消息重复,apache-flex,Apache Flex,有人知道为什么错误消息会在Flex SDK 3.5中重复(但不是在3.4中),并且有一个好方法让它停止重复吗?请参见屏幕截图: 您还可以在此处看到不同的应用程序: [在两个应用上都启用了查看源] 要做到这一点,请将textInput字段留空,然后多次单击save。然后将鼠标移到文本输入上 我可以想出几个解决方案,但它们似乎相当粗糙 谢谢 下面是一个在3.5中修复此问题的方法 查看此文件的源: 将saveMessage()方法更改为如下所示: public function saveMes

有人知道为什么错误消息会在Flex SDK 3.5中重复(但不是在3.4中),并且有一个好方法让它停止重复吗?请参见屏幕截图:

您还可以在此处看到不同的应用程序:

[在两个应用上都启用了查看源]

要做到这一点,请将textInput字段留空,然后多次单击save。然后将鼠标移到文本输入上

我可以想出几个解决方案,但它们似乎相当粗糙

谢谢


下面是一个在3.5中修复此问题的方法

查看此文件的源:

将saveMessage()方法更改为如下所示:

public function saveMessage(event:Event):void
        {
            setupValidators();

            var failedValidations:Array = new Array();
            failedValidations = Validator.validateAll(_formValidators);

            if (failedValidations.length == 0)
            {
                Alert.show("save it");
            }
            else
            {
                for each (var validationResultEvent:ValidationResultEvent in failedValidations)
                {
                    hackForSDK35Bug22911ToRemoveRepeatingErrorMessages(validationResultEvent);
                }
            }
        }
然后添加此方法:

private function hackForSDK35Bug22911ToRemoveRepeatingErrorMessages(failedValidation:ValidationResultEvent):void
        {
            var uiComponent:UIComponent = failedValidation.target.source as UIComponent;
            var errorString:String = uiComponent.errorString as String;
            uiComponent.errorString = errorString.split("\n")[0];
        }

这应该会删除重复的错误消息,只留下一条…

好的,这个问题似乎存在一个未解决的错误:查看我的应用程序的源代码后,你可能会想,为什么每次单击“保存”按钮时我都会创建一个新的验证程序。我这样做是因为有一个bug:(-你应该尽快迁移到Flex4,Jeremy。