Flex 3.5 Validator错误消息重复

时间:2010-08-26 14:50:02

标签: flex

任何人都知道为什么错误消息会在Flex SDK 3.5中重复出现(但不会在3.4中重复出现)并且有一个很好的方法可以让它停止重复?见截图:

alt text

alt text

您还可以在此处查看不同的应用:

http://www.flexdevelopers.com/examples/validator/3.4/Tester.html

http://www.flexdevelopers.com/examples/validator/3.5/Tester.html

[在两个应用中启用了查看源代码]

要实现此目的,请将textInput字段留空并点击保存多次。然后将鼠标悬停在textInput。

我可以想到几个解决方案,但它们看起来很糟糕。

谢谢,

Jeremy Mitchell

1 个答案:

答案 0 :(得分:2)

这是一个在3.5中修复此问题的黑客。

查看此文件的来源:http://www.flexdevelopers.com/examples/validator/3.5/Tester.html

将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];
        }

应删除重复的错误消息,只留下一个......