Top > SAStrutsあれこれ > Flexで従業員情報を削除しましょう

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 
-
|
-
|
-
|
|
!
|
|
!
    @Execute(validator = false)
    public String deleteEmployee() throws JAXBException, IOException {
        ResponseBase rb = new ResponseBase();
        try {
            employeeService.delete(employeeService.findById(Integer.parseInt(employeeForm.id)));
        } catch (RuntimeException e) {
            rb.result = ResponseBase.FAULT;
            rb.message = e.toString().substring(0, Math.min(e.toString().length(), 600));
        }
        XmlUtil.sendXML(ResponseBase.class, rb);
        return null;
    }
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 
 
-
|
|
|
|
|
|
|
|
|
|
|
|
!
package tutorial.form;
 
public class EmployeeForm {
    
    public String id; // 今回追加
    
    public String name;
    
    public String jobType;
    
    public String salary;
    
    public String departmentId;
    
    public String addressId;
}
  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
<?xml version="1.0" encoding="utf-8"?>
<!-- (1)applicationComplete="show()"はHTMLのonloadです。-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:web="*" applicationComplete="init()">
 
    <!-- 
         ActionScriptは外部からインクルードします。
    -->
    <mx:Script source="as/AllListWithDeleteButton.as" />
         
    <!-- 全件検索用POSTデータ -->
    <mx:Model id="findAll">
      <root>
        <findAll>method</findAll>
      </root>
    </mx:Model>
    
    <!-- 削除用POSTデータ <id>は、グリッドで現在選択されている行の"id"フィールドとバインド -->
    <mx:Model id="deleteObject">
      <root>
        <deleteEmployee>method</deleteEmployee>
        <id>{dg1.selectedItem.id}</id>
      </root>
    </mx:Model>
    
    <mx:Label x="10" y="10" text="Tutorial: Employee List with Delete Button" width="500" height="34" fontWeight="bold" fontFamily="MS ゴシック" fontSize="26"/>
    <mx:DataGrid width="500" id="dg1" editable="false" x="10" y="52" fontFamily="MS ゴシック">
        <mx:columns>
            <!-- (2)SAStrutsから取得するXMLデータと列をバインド-->
            <mx:DataGridColumn headerText="Id" dataField="id"/>
            <mx:DataGridColumn headerText="Name" dataField="name"/>
            <mx:DataGridColumn headerText="JobType" dataField="jobType"/>
            <mx:DataGridColumn headerText="Salary" dataField="salary"/>
            <mx:DataGridColumn headerText="Department" labelFunction="departmentColumnLabelFunction"/>
            <mx:DataGridColumn headerText="Address" labelFunction="addressColumnLabelFunction"/>
            <mx:DataGridColumn editable="false">
                <mx:itemRenderer>
                    <mx:Component>
                        <!-- 
                             Component外のメソッドにアクセスするにはouterDocumentを使用する
                             また、対象のメソッドはpublicになっている必要があります。
                        -->
                        <mx:Button label="Del" height="5" click="outerDocument.deleteEmployee(data)" />
                    </mx:Component>
                </mx:itemRenderer>
            </mx:DataGridColumn>
        </mx:columns>
    </mx:DataGrid>
    
</mx:Application>
Everything is expanded.Everything is shortened.
  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
 
 
 
 
 
 
 
 
 
 
 
-
|
!
 
 
-
|
!
 
 
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
 
 
-
-
|
|
!
!
 
 
-
|
-
|
|
-
|
!
!
 
 
-
|
|
-
|
|
-
|
!
!
 
 
-
|
!
 
 
-
|
|
!
 
 
-
|
|
!
// ActionScript file
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.rpc.AsyncToken;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.mxml.HTTPService;
 
//【del】ボタンクリック時のハンドラ
//確認ダイアログを表示します。
//※別のコンポーネントから呼ばれるのでpublicにしています。
public function deleteEmployee(data:Object):void {
    Alert.show(":id:" + data.id + " name:" + data.name + "を削除しますか?", "情報削除", mx.controls.Alert.YES | mx.controls.Alert.NO, this, clickButtonHandler);
}
  
//入力フォームの初期表示処理
private function init():void {
    post2sastruts("searchEmployee", findAll, resultHandler, faultHandler);
}
  
//サーバーへのリクエスト処理(共通)
private function post2sastruts(action_name:String, data:Object, resultFunc:Function, errorFunc:Function):void {
    System.useCodePage = true;
    const base_url:String = "http://localhost:8080/sastruts-flex/";
    
    // HTTP通信用オブジェクトを生成
    var srv:HTTPService = new HTTPService();
    srv.addEventListener(ResultEvent.RESULT,resultFunc);
    srv.addEventListener(FaultEvent.FAULT,errorFunc);
    srv.showBusyCursor = true;
    srv.request = data;
    srv.resultFormat = "e4x"; 
    srv.url = base_url + action_name + "/"; //末尾に"/"が無いとアクションフォームにデータが格納されません。
    srv.method = "POST"; 
    
    // リクエストを実行〜結果はresultHandlerで受け取ります。
    var at:AsyncToken = srv.send(data);
}
 
//削除確認ダイアログのボタンがクリックされた時のハンドラ
private function clickButtonHandler(event:CloseEvent):void {
    if (event.detail==Alert.YES) {
        //サーバーへ削除リクエストを送信します。
        post2sastruts("employee", deleteObject, deleteResultHandler, faultHandler);
    }
}
 
//サーバーへの削除リクエストに対するレスポンス受信時の処理
private function deleteResultHandler(e:ResultEvent):void {
    //サーバー側の処理結果をチェックします。
    if( e.result.result  * "success" ) {
        Alert.show("削除成功です");
        dg1.dataProvider.removeItemAt(this.dg1.selectedIndex);
    } else {
        Alert.show("サーバー処理失敗\n\n理由 : " + e.result.message);
    }
}
            
// HTTPServiceが成功
private function resultHandler(e:ResultEvent):void {
    
    //サーバー側の処理結果をチェックします。
    if( e.result.result  * "success" ) {
        //DataGridにデータを渡します
        dg1.dataProvider = e.result.Content.Employee;
    } else {
        Alert.show("サーバー処理失敗\n\n理由 : " + e.result.message);
    }
}
 
// HTTPServiceでエラーが発生した
private function faultHandler(e:FaultEvent):void {
    Alert.show("HTTPService失敗\n\n理由 : " + e.fault.message);
}
 
//DataGridのDepartmentカラムにXMLの値をバインドする
private function departmentColumnLabelFunction(item:Object, column:DataGridColumn):String {
    // itemにはEmployeeタグが来ます。子要素や属性はE4Xで取得
    return XML(item).department.name;
}
 
//DataGridのAddressカラムにXMLの値をバインドする
private function addressColumnLabelFunction(item:Object, column:DataGridColumn):String {
    // itemにはEmployeeタグが来ます。子要素や属性はE4Xで取得
    return XML(item).address.name;
}

添付ファイル: fileflex_emp_del_3.jpg 280件 [詳細] fileflex_emp_del_2.jpg 423件 [詳細] fileflex_emp_del_1.jpg 405件 [詳細]

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