¿¹ :º¹¼öÀÇ ÇʵåÀÇ °ËÁõ

¹ß¸® µ¥ÀÌÅÍ´Â, 1 ¹ø¿¡ º¹¼öÀÇ Çʵ带 °ËÁõÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, »ç¶÷ÀÇ ¼º, À̸§, ¹Ìµé ³×ÀÓÀ» ³ªÅ¸³»´Â 3 °³ÀÇ ÀÔ·Â ÄÁÆ®·ÑÀ» °ËÁõÇϱâ À§Çؼ­, NameValidator ¶ó°í ÇÏ´Â Ä¿½ºÅÒÀÇ validator ¸¦ ÀÛ¼ºÇÑ´Ù°í ÇÕ´Ï´Ù.

º¹¼öÀÇ Çʵ带 Á¶»çÇÏ´Â validator ¸¦ ÀÛ¼ºÇÏ·Á¸é , Flex DateValidator Ŭ·¡½º¿Í °°°Ô, º¹¼öÀÇ ÀÔ·Â Çʵ带 ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) validator ÀÇ properties ¸¦ Á¤ÀÇÇÏ´ÂÁö, validator ¿¡°Ô °Ç³×Áö´Â ´ÜÀÏÀÇ ¾ÆÀÌÅÛ¿¡, °ËÁõ ´ë»óÀÇ ¸ðµç Çʵ带 Æ÷ÇÔÇÕ´Ï´Ù.

´ÙÀ½ÀÇ ¿¹¿¡¼­´Â,first,middle,last ÀÇ 3 °³ÀÇ Çʵ带 Æ÷ÇÔÇÑ ¾ÆÀÌÅÛÀ» °ËÁõÇÏ´Â NameValidator ¸¦ »ç¿ëÇÕ´Ï´Ù.

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

    <mx:Model id="person">
        <name>
          <custName>
             <first>{firstInput.text}</first>
             <middle>{middleInput.text}</middle>
             <last>{lastInput.text}</last>
          </custName>
        </name>
    </mx:Model>

    <mx:TextInput id="firstInput"/>
    <mx:TextInput id="middleInput"/>
    <mx:TextInput id="lastInput"/>

    <MyComp:NameValidator id="nameVal" 
source="{person}" property="custName"
listener="{firstInput}"/>
<mx:Button label="Validate" click="nameVal.validate() ;"/> </mx:Application>

ÀÌ validator ´Â, 3 °³ÀÇ ÀÔ·Â Çʵ带 Á¶»çÇÕ´Ï´Ù. firstInput ¸¦ °ËÁõ Listener·Î¼­ ÁöÁ¤ÇÕ´Ï´Ù. µû¶ó¼­, °ËÁõ ¿¡·¯°¡ ¹ß»ýÇϸé, Flex ´Â ÃÖÃÊÀÇ TextInput ÄÁÆ®·Ñ¿¡ °ËÁõ ¿¡·¯ ¸Þ¼¼Áö¸¦ Ç¥½ÃÇÕ´Ï´Ù.

´ÙÀ½ÀÇ ¿¹¿Í °°ÀÌ, NameValidator Ŭ·¡½º¸¦ ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.

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

    public class NameValidator extends Validator {

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

        public function NameValidator () {
            super();
        }

        override protected function doValidation(value:Object) :Array {
        
            var fName:String = value.first;
            var mName:String = value.middle;
            var lName:String = value.last;    
            
            // °á°úÀÇ Array ¸¦ Ŭ¸®¾î ÇÑ´Ù
            results = [];

            // ±âº» class doValidation()¸¦ È£ÃâÇÑ´Ù
            results = super.doValidation(value);        
            // ¿¡·¯°¡ ÀÖÀ»Áö ¾î¶³Áö¸¦ µ¹·ÁÁØ´Ù
            if (results.length > 0)
                return results;

            // À̸§ÀÇ Çʵ带 üũÇÑ´Ù 
            if (fName == "" || fName == null) {
                results.push(new ValidationResult(true, "first", "noFirstName", 
                        "No First Name. "));
                return results;
            }
            
            // ¹Ìµé ³×ÀÓÀÇ Çʵ带 üũÇÑ´Ù             
            if (mName == "" || mName == null) {
                results.push(new ValidationResult(true, "middle", "noMiddleName", 
                        "No Middle Name. "));
                return results;
            }

            // ¼ºÀÇ Çʵ带 üũÇÑ´Ù 
            if (lName == "" || lName == null) {
                results.push(new ValidationResult(true, "last", "noLastName", 
                        "No Last Name. "));
                return results;
            }
            
            return results;
        }
    }
}

ÀÌ ¿¹¿¡¼­´Â, ´ÜÀÏÀÇ validator ¸¦ »ç¿ëÇØ, validator ¿¡°Ô °Ç³×Áø Object ÀÇ 3 °³ÀÇ Çʵ带 °ËÁõÇϱâ À§ÇØ(¶§¹®¿¡),ValidationResult Ŭ·¡½ºÀÇ constructor¡¡ ¡¡ ¿¡ ¿É¼ÇÀÇ 2 ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅ͸¦ Æ÷ÇÔÇØ, °ËÁõ ¿¡·¯ÀÇ ¿øÀÎÀÌ µÈ subfield¸¦ ÁöÁ¤ÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, Flex ´Â ¿¡·¯ÀÇ ¿øÀÎÀÌ µÈ ÀÔ·Â ÄÄÆÛ³ÍÆ®¸¦ ½Äº°ÇØ, ¾îÇø®ÄÉÀ̼dz»¿¡¼­ ±× ÄÄÆÛ³ÍÆ®¸¦ ÇÏÀ̶óÀÌÆ® Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

doValidation() ¸Þ¼Òµå´Â, ÃÖÃÊÀÇ °ËÁõ ¿¡·¯¸¦ °ËÃâÇÏÀÚ, °ð¹Ù·Î °ËÁõ ¿¡·¯¸¦ µ¹·ÁÁÝ´Ï´Ù. À̰ÍÀº, ´ÙÀ½ÀÇ ¿¹¿Í °°ÀÌ, ¸ðµç ÀÔ·Â Çʵ带 Á¶»çÇÏ°í ³ª¼­ ¿¡·¯ ¸Þ¼¼Áö¸¦ µ¹·ÁÁÖµµ·Ï(µíÀÌ) doValidation() ¸¦ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

        override protected function doValidation(value:Object) :Array {
        
            var fName:String = value.first;
            var mName:String = value.middle;
            var lName:String = value.last;    
            
            // °á°úÀÇ Array ¸¦ Ŭ¸®¾î ÇÑ´Ù
            results = [];

            // ±âº» class doValidation()¸¦ È£ÃâÇÑ´Ù
            results = super.doValidation(value);        
            // ¿¡·¯°¡ ÀÖÀ»Áö ¾î¶³Áö¸¦ µ¹·ÁÁØ´Ù
            if (results.length > 0)
                return results;

            // À̸§ÀÇ Çʵ带 üũÇÑ´Ù 
            if (fName == "" || fName == null) {
                results.push(new ValidationResult(true, "first", "noFirstName", 
                        "No First Name. "));
            }
            
            // ¹Ìµé ³×ÀÓÀÇ Çʵ带 üũÇÑ´Ù             
            if (mName == "" || mName == null) {
                results.push(new ValidationResult(true, "middle", "noMiddleName", 
                        "No Middle Name. "));
            }

            // ¼ºÀÇ Çʵ带 üũÇÑ´Ù 
            if (lName == "" || lName == null) {
                results.push(new ValidationResult(true, "last", "noLastName", 
                        "No Last Name. "));
            }
            
            return results;
        }

¸Þ¼Òµå³»ÀÇ return ¸í·É¹®(statement)°¡ 1 ÇุÀ¸·Î µÇµµ·Ï(µíÀÌ),if ¸í·É¹®(statement)ÀÇ º»Ã¼·ÎºÎÅÍ return ¸í·É¹®(statement)¸¦ »èÁ¦ÇÕ´Ï´Ù. ÀÌ º¯°æ¿¡ ÀÇÇØ, 1 ¹ø¿¡ 3 °³°¡ ´Ù¸¥ °ËÁõ ¿¡·¯¸¦ °ËÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.