Разрешение реализации компонента - PullRequest
0 голосов
/ 28 ноября 2011

Я следовал этому руководству по реализации IP-валидатора через TextInput. Но мне не удалось устранить следующую ошибку в течение нескольких часов.

Ошибка:

Could not resolve <flexScript:IPAddressValidator> to a component implementation.    MasterTabNavigator.mxml /XflowGUI/src/view

Код:

MasterTabNavigator.mxml:

<mx:TabNavigator xmlns:fx="http://ns.adobe.com/mxml/2009" 
                 xmlns:s="library://ns.adobe.com/flex/spark" 
                 xmlns:mx="library://ns.adobe.com/flex/mx" 
                 xmlns:flexScript="flexScript.*" >

<s:TextInput id="txtServerIP" width="200"/>
<flexScript:IPAddressValidator source="{txtServerIP}" property="text"/>
</mx:TabNavigator>

пакет flexScript: (точная копия приведенного кода здесь

package flexScript
{
    import mx.validators.ValidationResult;
    import mx.validators.Validator;


    public class IPAddressValidator extends Validator {

        public function IPAddressValidator() {
            // Call base class constructor.
            super();
        }

        override protected function doValidation(value:Object):Array {
            // create an array to return.
            var ValidatorResults:Array = new Array();
            // Call base class doValidation().
            ValidatorResults = super.doValidation(value);       
            // Return if there are errors.
            if (ValidatorResults.length > 0)
                return ValidatorResults;

            if (String(value).length == 0)
                return ValidatorResults;

            var RegPattern:RegExp = /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/;
            var a:Array = RegPattern.exec(String(value));
            if (a == null)
            {
                ValidatorResults.push(new ValidationResult(true, null, "IPAddress Error","You must enter an IP Address"));
                return ValidatorResults;
            }
            return ValidatorResults;
        }
    }
}

Я буду рад, если кто-то заметит мою ошибку. Кроме того, у меня нет двух компонентов, названных так же, как упомянуто в этом посте, где у вопросника была очень похожая проблема.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011

Нашли исправление. Я запустил ваш код, та же проблема, что и у вас, поэтому изменил имя пакета flexScript на flexScript1 (должно быть какое-то зарезервированное слово) и добавил IPValidator в тег объявлений, и он работал отлично. Требуются оба изменения, чтобы он работал.

    <fx:Declarations>
        <flexscript1:IPAddressValidator source="{txtServerIP}" property="text"/>
    </fx:Declarations>

Вот полный код, который запускается для веб-приложения Flex 4.5:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"                
               xmlns:flexscript1="flexscript1.*">

    <s:layout>
        <s:VerticalLayout/>
    </s:layout>

    <fx:Declarations>
        <!-- Define the PhoneNumberValidator. -->
        <flexscript1:IPAddressValidator id="pnV" 
                                 source="{phoneInput}" property="text"
                                 />
    </fx:Declarations>

    <s:TextInput id="phoneInput" keyUp="{phoneInput}"/>
    <s:TextInput id="focusOut"/>

</s:Application>

Кроме того, посмотрите следующую ссылку для проверки при вводе: Flex - проверка номера, не уберет ли красное свечение, если щелкнуть фокус? (пример предоставлен)

0 голосов
/ 28 ноября 2011

Вы пытались поместить свой IPAddressValidator в flex: часть объявлений ...?Должно быть там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...