Top > SAStrutsあれこれ > BlazeDSで従業員情報を登録しましょう

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
-
|
|
-
|
|
|
|
|
|
|
|
|
|
!
!
package dto {
    [Bindable]
    [RemoteClass(alias="samples.entity.Employee")]
    public class EmployeeDto {
        
        public var name:String;
 
        public var jobType:String;
 
        public var salary:String;
 
        public var departmentId:String;
 
        public var addressId:String;
    }
}
Everything is expanded.Everything is shortened.
  1
  2
 
 
    [Bindable]
    [RemoteClass(alias="samples.entity.Employee")]
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="dto.*" applicationComplete="init()">
 
    <mx:Script>
        <![CDATA[
            import mx.core.UIComponent;
            import mx.events.ValidationResultEvent;
            import mx.validators.Validator;
            import mx.controls.Alert;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.collections.ArrayCollection;
 
            //入力フォームの初期表示処理
            private function init():void {
                System.useCodePage = true;
                jobType.selectedIndex = -1;
                addressService.findAll();
                departmentService.findAll();
            }
            
            //「登録」ボタンクリック時処理
            private function regist():void {
                
                var errors:Array = Validator.validateAll(this.validatorArray);
                if(errors.length  * 0){
                    //データが正常なので登録処理を行います。
                    //BlazeDSがEmployeeDto→Employeeに変換して、EmployeeService#insertに渡します。
                    employeeService.insert(addModel);
                } else {
                    //バリデーションエラー時の処理
                    var errorFields:Array = [];
                    var errorMessages:Array = [];
                    for each (var e:ValidationResultEvent in errors) {
                        //エラー対象のプロパティ名格納
                        errorFields.push(e.target.source);
                        //エラーメッセージ格納
                        errorMessages.push(e.message);
                    }
                    for each (var c:UIComponent in [ ename, jobType, salary, departmentId, addressId ]) {
                        var n:int = errorFields.indexOf(c);
                        if (n >= 0) {
                            //エラープロパティを強調(太枠)表示します。
                            c.setStyle("borderStyle", "solid");
                            c.setStyle("borderThickness", 3);
                        } else {
                            c.setStyle("borderStyle", "inset");
                        }
                    }
                }
            } 
           
            // サーバーから受信した部署データをコンボボックスにセット
            private function setDepartment(e:ResultEvent):void {
                departmentId.dataProvider = e.result;
                departmentId.selectedIndex = -1;
            }
            
            // サーバーから受信した住所データをコンボボックスにセット
            private function setAddress(e:ResultEvent):void {
                addressId.dataProvider = e.result;
                addressId.selectedIndex = -1;
            }
                       
            // 登録成功時のハンドラ
            private function registResultHandler(e:ResultEvent):void {
                Alert.show("登録成功です");
            }
            
            // サーバー処理の失敗じのハンドラ
            private function faultHandler(e:FaultEvent):void {
                Alert.show("サーバー処理失敗\n\n理由 : " + e.fault.message);
            }
        ]]>
    </mx:Script>
        
    <!-- 
         Java側のsamples.entity.Employeeクラスにマッピングする
         EmployeeDtoオブジェクトとフォームをバインドします。
         ※"local:"という名前空間は、<mx:Application>タグで指定している
         「xmlns:local="dto.*"」属性に対応しています。
    -->
    <local:EmployeeDto id="addModel">
        <local:name>{ename.text}</local:name>
        <local:jobType>{jobType.value}</local:jobType>
        <local:salary>{salary.text}</local:salary>
        <local:departmentId>{departmentId.selectedItem.id}</local:departmentId>
        <local:addressId>{addressId.selectedItem.id}</local:addressId>
    </local:EmployeeDto>
 
    <mx:Panel title="Form Container Example" height="450" width="50%" 
        paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">
 
        <mx:Text width="100%" color="blue"
            text="Moving from one form field to another triggers the validator."/>
 
        <mx:Form width="100%" height="100%" defaultButton="{submit}">
            <mx:FormHeading label="Enter values into the form."/>
 
            <mx:FormItem label="Name" required="true">
                <mx:TextInput id="ename" width="200"/>
            </mx:FormItem>
 
            <mx:FormItem label="JobType" required="true">
                <mx:ComboBox id="jobType" width="200">
                  <mx:dataProvider>
                    <mx:Array>
                      <mx:Object label="CLERK" data="CLERK" />
                      <mx:Object label="SALESMAN" data="SALESMAN" />
                      <mx:Object label="MANAGER" data="MANAGER" />
                    </mx:Array>
                  </mx:dataProvider>
               </mx:ComboBox>
            </mx:FormItem>
 
            <mx:FormItem label="Salary" required="true">
                <mx:TextInput id="salary" width="200"/>
            </mx:FormItem>
 
            <mx:FormItem label="Department" required="true">
                <mx:ComboBox id="departmentId" labelField="name" width="200">
                </mx:ComboBox> 
            </mx:FormItem>
             
            <mx:FormItem label="Address" required="true">
                <mx:ComboBox id="addressId" labelField="name" width="200">
                </mx:ComboBox> 
            </mx:FormItem> 
            
            <mx:FormItem>
                <mx:Button label="登録" id="submit" width="108" click="regist();"/>
            </mx:FormItem>
        </mx:Form>
 
    </mx:Panel>
    
    <!-- 
         フォームデータのバリデーションチェック
         まとめてチェックできるように配列化しておきます。
     -->
    <mx:Array id="validatorArray">
        <mx:StringValidator source="{ename}" property="text" minLength="1" maxLength="32"/>
        <mx:StringValidator source="{jobType}" property="text" />
        <mx:StringValidator source="{departmentId}" property="text" />
        <mx:StringValidator source="{addressId}" property="text" />
        <mx:NumberValidator source="{salary}" property="text" integerError="Enter Integer value"
            minValue="0" domain="int"/>
    </mx:Array>
    
    <!--
         リモートオブジェクトを生成します。
    -->
    <mx:RemoteObject id="employeeService" destination="employeeService">
        <mx:method name="insert" result="registResultHandler(event)" fault="faultHandler(event)" />
    </mx:RemoteObject>
    <mx:RemoteObject id="departmentService" destination="departmentService">
        <mx:method name="findAll" result="setDepartment(event)" fault="faultHandler(event)" />
    </mx:RemoteObject>
    <mx:RemoteObject id="addressService" destination="addressService">
        <mx:method name="findAll" result="setAddress(event)" fault="faultHandler(event)" />
    </mx:RemoteObject>
    
</mx:Application>

添付ファイル: fileblaze_emp_add_3.jpg 195件 [詳細] fileblaze_emp_add_2.jpg 174件 [詳細] fileblaze_emp_add_1.jpg 202件 [詳細]

リロード   新規 編集 凍結解除 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2012-08-08 (水) 23:25:57 (2925d)