Я следовал этому руководству по реализации 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;
}
}
}
Я буду рад, если кто-то заметит мою ошибку. Кроме того, у меня нет двух компонентов, названных так же, как упомянуто в этом посте, где у вопросника была очень похожая проблема.