Ajaxフレームワーク ユーザーズガイド |
目次 索引 |
第5章 アプリケーションの開発 | > 5.10 アプリケーションの開発例(マッシュアップ) |
“画面部品の定義(マッシュアップ開発例)”で画面部品を定義した画面フォームに、Ajaxページエディタを利用して、ログイン・ログアウト処理に関する動作定義を記述します。
Ajaxページエディタの操作方法については、“Ajaxページエディタ”を参照してください。
動作定義では、ログインボタン・ログアウトボタンの定義と、イベントの定義・登録、初期表示・ログイン・ログアウト処理の定義を記述します。
画面の[ログイン]ボタンと[ログアウト]ボタンを定義します。
記述内容
<!-- ログインボタン定義 --> <div rcf:id="loginButton" rcf:type="Button" rcf:label="ログイン" rcf:width="80px" rcf:height="24px" style="left: 515px; top: 5px; position: absolute"></div> <!-- ログアウトボタン定義 --> <div rcf:id="logoutButton" rcf:type="Button" rcf:label="ログアウト" rcf:width="80px" rcf:height="24px" style="left: 515px; top: 5px; position: absolute"></div> |
作成したボタンにイベントを定義します。
記述内容
// イベント定義 calEvent = { loginButton:{ (1) click:login (2) }, logoutButton:{ (1) click:logout (3) } }; |
1) 作成したボタンを指定
2) クリック時にlogin()関数を実行するように定義
3) クリック時にlogout()関数を実行するように定義
初期処理の登録APIを利用して、定義したイベントを登録します。
記述内容
// 初期処理定義 RCF.addInitializedListener( function(eventObject) { // イベント登録 rcf.event.EventRegistrar.registerEvents(calEvent, "calEvent"); (1) init(); (2) } ); |
1) 定義したイベントに“calEvent”という名前を付けて登録
2) 初期表示時にinit()関数を実行するように定義
イベントの初期処理定義で記述した関数を定義し、Apcoordinatorのビジネスクラスを呼び出す関数を記述します。
記述内容
// 初期処理定義 function init(){ // 初期表示時のみコンテナ部品の表示制御 document.getElementById("before_div").style.visibility = "visible"; document.getElementById("after_div").style.visibility = "visible"; // 一覧部の情報をクリア listModel.setProperty("list", []); // Webサイト(公開カレンダ)にアクセス accessCalendar("PublicCalendar", "json"); } // 外部との通信を行うメイン処理定義(マッシュアップフレームワークを利用) function accessCalendar(serviceId, type){ // queryData(送信パラメタの指定) var queryData = {}; // requestParam(サービスIDとタイプの指定) var reqParam = {serviceId: serviceId, type: type}; (1) (2) // option var option = { url: "muf/proxy", callback: function(res){ (3) // 公開カレンダ・データの取得(RESTアダプタ:XML→JSON形式) if(serviceId == "PublicCalendar"){ var app_list = res.childNodes; for(i=0; i<app_list.length; i++){ var responseData = new Object(); responseData.date = app_list[i].childNodes[0].childNodes[0]; responseData.timerange = app_list[i].childNodes[1].childNodes[0]; responseData.subject = app_list[i].childNodes[2].childNodes[0]; responseData.secret = ""; // 1行ごとテーブルに追加(画面部品に関連づけ) listModel.getDataProvider("list").addItem(responseData); } } // 私用カレンダ・データの取得(HTMLアダプタ:HTML→JSON形式) else if(serviceId == "PrivateCalendar"){ var tbl_tr = res.childNodes[0].childNodes; // 1行目(i=0)は見出し行のため省略(インデックス1より開始) for(i=1; i<tbl_tr.length; i++){ var responseData = new Object(); responseData.date = tbl_tr[i].childNodes[0].childNodes[0]; responseData.timerange = tbl_tr[i].childNodes[1].childNodes[0]; responseData.subject = tbl_tr[i].childNodes[2].childNodes[0]; responseData.secret = "Private"; // 1行ごとテーブルに追加(画面部品に関連づけ) listModel.getDataProvider("list").addItem(responseData); } } // TableView のソート(callbackの最後で行う) list.sort("date", true); }, // エラー処理定義 errorHandler: function(err) { alert("マッシュアップフレームワークでエラーが発生しました。\n" + err.message); } }; // Webサービス呼出し MuRequest.send(queryData, reqParam, option); (4) } |
1) マッシュアップ定義ファイルに定義したWebサービスのサービスIDを指定
2) マッシュアッププロキシからのレスポンス形式(XML形式またはJSON形式)を指定
3) 通信完了時のコールバック処理を定義
4) 送信するクエリ文字列オブジェクト、リクエストパラメタオブジェクト、通信設定オブジェクトを指定して、通信実行
イベントの定義で記述した関数を定義し、Apcoordinatorのビジネスクラスを呼び出す関数を記述します。
記述内容
// ログイン処理定義 function login(){ // ログイン認証チェック(通信フレームワークを利用) // requestParams var reqParam = { beanId: "dataBeanId1", (1) verb: "login" (2) }; // option var option = { url: "acf/apc", callback: function(res){ (3) // ユーザIDが空でない場合、ログイン成功 if(res.userid != ""){ // 認証に成功した場合、Webサイト(私用カレンダ)にアクセス accessCalendar("PrivateCalendar", "json"); // Containerと見出しの切替え authinfoContainer.setSelectedContainerId("afterauthContainer"); userid_Text.setProperty("value", res.userid); list_Title.setProperty("value","公開カレンダ + 私用カレンダ"); } // ユーザIDが空の場合、認証エラー else{ alert("認証に失敗しました。"); } }, // エラー処理定義 errorHandler: function(err) { alert("通信フレームワークでエラーが発生しました。\n" + err.message); } }; // 通信サービス呼出し UjiRequest.send(authData, reqParam, option); (4) } |
1) 送信データを格納するデータBean(Ajaxフレームワーク環境定義ファイルに定義したデータBean ID)を指定
2) 呼び出すメソッドに対応するコマンド名(コマンドマップに定義したコマンド名)を指定
3) 通信完了時のコールバック処理を定義
4) 送信するデータオブジェクト、リクエストパラメタオブジェクト、通信設定オブジェクトを指定して、通信実行
イベントの定義で記述した関数を定義し、Apcoordinatorのビジネスクラスを呼び出す関数を記述します。
記述内容
// ログアウト処理定義 function logout(){ // 一覧部の情報をクリア listModel.setProperty("list", []); // Webサイト(公開カレンダ)にアクセス accessCalendar("PublicCalendar", "json"); // ログアウト処理(通信フレームワークを利用) // requestParams var reqParam = { beanId: "", (1) verb: "logout" (2) }; // option var option = { url: "acf/apc", callback: function(res){ (3) // 入力域の初期化 authinfoModel.setProperty("userid", ""); authinfoModel.setProperty("password", ""); // Containerと見出しの切替え authinfoContainer.setSelectedContainerId("beforeauthContainer"); userid_Text.setProperty("value", ""); list_Title.setProperty("value", "公開カレンダ(認証不要)"); }, // エラー処理定義 errorHandler: function(err) { alert("通信フレームワークでエラーが発生しました。\n" + err.message); } }; // 通信サービス呼出し UjiRequest.send(null, reqParam, option); (4) } |
1) 送信データを格納するデータBeanは不要なため、データBean IDは指定しない
2) 呼び出すメソッドに対応するコマンド名(コマンドマップに定義したコマンド名)を指定
3) 通信完了時のコールバック処理を定義
4) 送信するデータオブジェクト、リクエストパラメタオブジェクト、通信設定オブジェクトを指定して、通信実行
目次 索引 |