¿¹ : ´Ü¼øÇÑ validator ÀÇ ÀÛ¼º

StringValidator Ŭ·¡½º¸¦ »ç¿ëÇØ, stringÀÇ ±æÀ̰¡ ÃÖ¼ÒÄ¡º¸´Ù ±æ°Ô ÃÖ´ëÄ¡º¸´Ù ªÀº ÀÏÀ» °ËÁõÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, stringÀÇ ÄÁÅÙÃ÷´Â °ËÁõÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ¿¹¿¡¼­´Â, ź»ý³â¿¡ ±Ù°ÅÇØ ±× Àι°ÀÌ 18 ¼¼ ÀÌ»óÀÏÁö ¾î¶³Áö¸¦ ÆÇº°ÇÏ´Â ´Ü¼øÇÑ validator ¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

ÀÌ validator ´Â, ´ÙÀ½ÀÇ ¿¹¿Í °°ÀÌ, Validator ±âº» Ŭ·¡½º¸¦ È®ÀåÇÑ °ÍÀÔ´Ï´Ù.

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

    public class AgeValidator extends Validator {

        // doValidation()ÀÇ ¹Ýȯ°ªÀÇ Array ¸¦ Á¤ÀÇÇÑ´Ù
        private var results:Array;

        // constructor¡¡ ¡¡
        public function AgeValidator() {
            // ±âº» class constructor¡¡ ¡¡ À» È£ÃâÇÑ´Ù 
            super();
        }
    
        // doValidation() ¸Þ¼Òµå¸¦ Á¤ÀÇÇÑ´Ù
        override protected function doValidation(value:Object) :Array {

            // °á°úÀÇ Array ¸¦ Ŭ¸®¾î ÇÑ´Ù
            results = [];

            // ±âº» class doValidation()¸¦ È£ÃâÇÑ´Ù
            results = super.doValidation(value);        
            // ¿¡·¯°¡ ÀÖÀ»Áö ¾î¶³Áö¸¦ µ¹·ÁÁØ´Ù
            if (results.length > 0)
                return results;
        
            // º¯¼ö¸¦ ÀÛ¼ºÇØ, ÇöÀçÀÇ ÀÏÀÚ¿¡ ÃʱâÈ­ÇÑ´Ù
            var currentYear:Date = new Date;
    
            // ÀÔ·ÂÄ¡°¡ ¼öÄ¡ ÀÌ¿ÜÀÎÁö, °ªÀÌ ÀԷµÇÁö ¾Ê¾Ò´ø °æ¿ì´Â,
            // °ËÁõ ¿¡·¯¸¦ »ý¼ºÇÑ´Ù
            if (isNaN(Number(value)) || ! value)
            {
                results.push(new ValidationResult(true, null, "NaN", 
                    "You must enter a year. "));
                return results;
            }        

            // °è»êÇÑ ¿¬·ÉÀÌ 18 ¼¼ ¹Ì¸¸ÀÇ °æ¿ì´Â, °ËÁõ ¿¡·¯¸¦ »ý¼ºÇÑ´Ù
            if ((currentYear.getFullYear() - value) < 18) {
                results.push(new ValidationResult(true, null, "tooYoung", 
                    "You must be 18. "));
                return results;
            }
            
            return results;
        }
    }
}

ÀÌ ¿¹¿¡¼­´Â, ÃÖÃÊ·Î super() ¸¦ È£ÃâÇØ ±âº» Ŭ·¡½ºÀÇ constructor¡¡ ¡¡ À» È£ÃâÇÏ´Â public constructor¡¡ ¡¡ À» Á¤ÀÇÇÕ´Ï´Ù. validator ÀÇ required properties °¡ true ·Î ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì, ±âº» Ŭ·¡½º¿¡¼­´Â, Çʼö Çʵ忡 µ¥ÀÌÅͰ¡ ÀÔ·ÂµÈ °ÍÀ» È®ÀÎÇϴ üũ¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

ValidationResult Ŭ·¡½ºÀÇ constructor¡¡ ¡¡ ÀÇ 2 ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅÍ´Â,null ÀÔ´Ï´Ù. ÀÌ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇØ, °ËÁõ ¿¡·¯°¡ µÈ ¿ÀºêÁ§Æ®ÀÇ subfield (Á¸ÀçÇÏ´Â °æ¿ì)¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÜÀÏÀÇ Çʵ带 °ËÁõÇÒ °æ¿ì¿¡´Â, ÀÌ ÆÄ¶ó¹ÌÅ͸¦ »ý·« ÇØ ±¦Âú½À´Ï´Ù. º¹¼öÀÇ Çʵ带 °ËÁõÇÏ´Â °æ¿ìÀÇ ¿¹¿¡ ´ëÇØ¼­´Â,¿¹ :º¹¼öÀÇ ÇʵåÀÇ °ËÁõÀ» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

´ÙÀ½ÀÇ ¿¹¿Í °°ÀÌ, Flex ¾îÇø®ÄÉÀ̼dz»¿¡¼­ ÀÌ validator ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

<? xml version="1. 0"? >
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:MyComp="myValidators. *" >

    <mx:Model id="formInfo">
       <YearOfBirth>{birthYear.text}</YearOfBirth>
    </mx:Model>
    
    <MyComp:AgeValidator id="ageV" required="true"
source="{birthYear}" property="text"/>
<mx:Form > <mx:FormItem label="Enter birth year: " > <mx:TextInput id="birthYear"/> </mx:FormItem> <mx:FormItem label="Enter birth year: " > <mx:Button label="Submit"/> </mx:FormItem> </mx:Form> </mx:Application>

Ä¿½ºÅÒ validator ÀÇ package ¸í·É¹®(statement)´Â,myValidators µð·ºÅ丮³»¿¡ ±× validator ¸¦ deployÇÒ Çʿ䰡 ÀÖ´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. ÀüÀÇ ¿¹¿¡¼­´Â, Flex ¾îÇø®ÄÉÀ̼ÇÀ» Æ÷ÇÔÇÑ µð·ºÅ丮ÀÇ ÇÏÀ§ µð·ºÅ丮¿¡ ¹èÄ¡µË´Ï´Ù. ±× ¶§¹®¿¡, Flex ¾îÇø®ÄÉÀ̼ÇÀÇ namespace Á¤ÀÇ´Â xmlns:MyComp="myValidators. *" °¡ µË´Ï´Ù. deployÀÇ »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â,ÄÄÆÛ³ÍÆ®ÀÇ ÄÄÆÄÀÏÀ» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.