Apcoordinator ユーザーズガイド
|
目次
|
19.2.1 Flashの作成
Flash連携機能では、Flashが提供するActionScriptのうち、LoadVars
オブジェクトおよびXML
オブジェクトによる通信をサポートしています。
ActionScriptとはFlashが提供するスクリプト言語で、ムービーの制御やサーバアプリケーションとの通信が可能です。
ActionScriptはボタンのクリックや、キーの入力などのイベントによって動作が開始します。
ActionScriptの詳細はFlash MXのマニュアルを参照してください。
以下ではLoadVars
オブジェクトおよびXML
オブジェクトを利用したFlashの作成方法について説明します。
■LoadVars
を使用する場合
LoadVars
オブジェクトを使用した場合の動作概要を次に示します。
LoadVars
オブジェクトを利用した場合、HTMLのフォームを送信した場合と同様に、キーと値の組みがサーバに送信されます。
送信されたキーは、サーバ側のデータBeanのプロパティと対応して値が格納されます。例えば、value="1"
というデータを送信した場合、データBeanのvalue
フィールドに"1"が格納されます。ただし、Apcoordinatorで予約されているキー(uji_bean
、uji_xmlBean
、uji_verb
)はデータBeanに格納されません。
以下の例では、mypkg.MyDataBean
に対して、value1="3"
、value2="4"
、calMethod="add"
というデータと、"myverb
"というコマンドを送信しています。
1: on (release) {
2: myLoadVars = new LoadVars();
3: myLoadVars.uji_bean="mypkg.MyDataBean";
4: myLoadVars.uji_verb = "myverb";
5: myLoadVars.value1="3";
6: myLoadVars.value2="4";
7: myLoadVars.calMethod="add";
8: repData = new LoadVars();
9: repData.onLoad = myOnLoad;
10: myLoadVars.sendAndLoad("http://[ホスト名]/[サーブレット名]", repData);
11:
12: function myOnLoad(success){
13: if(success){
14: // サーバとの通信が成功した場合の処理
15: _root.textarea.text = repData.message;
16: }
17: }
18: }
|
- 1行目
- ActionScriptが起動するためのイベントハンドラです。この例ではボタンのクリックが解除されたときにActionScriptが起動します。
- 2行目
LoadVars
オブジェクトを作成しています。
- 3行目-4行目
- Apcoordinatorに必要なリクエストパラメタを設定しています。上記例では
uji_bean
リクエストパラメタに"mypkg.MyDataBean
"を、uji_verb
リクエストパラメタに"myverb
"を設定しています。Flash連携機能ではこの他にuji_xmlBean
リクエストパラメタを指定することができます。
リクエストパラメタ名 | 機能 | 省略時の動作 |
uji_bean |
送信データを格納するデータBeanをパッケージ名を含めて指定します。XMLデータBeanに送信データを格納する場合は"com.fujitsu.uji.xml.XmlDataBean "を指定してください。 |
指定されていない場合はデータBeanを作成しません。 |
uji_xmlBean |
送信データをXMLデータBeanに格納する場合のルート要素名を指定します。 |
XMLデータBeanに送信データを格納する場合は省略できません |
uji_verb |
コマンドを指定します。 |
コマンドを送信しません。 |
- 5行目-7行目
- 送信するデータを設定しています。この例では次のデータを設定しています。データBeanに設定される場合には、キーがデータBeanのプロパティ名と対応し、XMLデータBeanに設定される場合はキーがXMLのルート要素直下の要素名に対応します。
キー | 値 |
value1 |
3 |
value2 |
4 |
calMethod |
add |
- 8行目-9行目
- 返却されたデータを格納するためのオブジェクトを生成し、通信が完了した場合に呼び出すイベントを登録しています。
- 10行目
- サーバにデータを送信し返却値を受け取ります。データを送信する場合に使用するメソッドによって返却されたデータの受け取り方が異なります。
sendAndLoad
メソッドを使用する場合
sendAndLoad
メソッドに指定したオブジェクトに返却値が格納されます。指定できるものはLoadVars
オブジェクトかXML
オブジェクトです。
send
メソッドを使用する場合
- サーバアプリケーションからの返却値がそのままブラウザに表示され、画面遷移が発生します。Webアプリケーションとしての処理を継続する場合はJSP名を返却してください。
- 12行目-17行目
- 通信が成功した場合の処理を記述します。ここでは、テキスト(
textarea
オブジェクト)にrepData
のmessage
変数の値を代入して画面に表示しています。
■XML
を使用する場合
XML
オブジェクトを使用した場合の動作概要を次に示します。
XML
オブジェクトを利用した場合、サーバ側にXMLデータが送信され、ビジネスクラスではXMLデータBeanとして受け取ることが可能です。
このとき、コマンドや格納先のXMLデータBean(XMLデータBeanを拡張した場合)を指定することはできません。
以下では"<root><data>mydata</data></root>
"というXMLデータを送信する例を示します。
1: on (release) {
2: myXML = new XML("<root><data>mydata</data></root>");
3: repXML = new XML();
4: repXML.onLoad = myOnLoad;
5: myXML.sendAndLoad("http://[ホスト名]/[サーブレット名]", repXML);
6:
7: function myOnLoad(success){
8: if(success){
9: // サーバとの通信が成功した場合の処理
10: _root.textarea.text=repXML.toString();
11: }
12: }
13: }
|
- 1行目
- ActionScriptが起動するためのイベントハンドラです。この例ではボタンのクリックが解除されたときにActionScriptが起動します。
- 2行目
XML
オブジェクトを作成しています。この例ではコンストラクタでXMLデータを生成しています。
- 3行目-4行目
- 返却されたデータを格納するためのオブジェクトを生成し、通信が完了した場合に呼び出すイベントを登録しています。
- 5行目
- サーバにデータを送信し返却値を受け取ります。データを送信する場合に使用するメソッドによって返却されたデータの受け取り方が異なります。
sendAndLoad
メソッドを使用する場合
sendAndLoad
メソッドに指定したオブジェクトに返却値が格納されます。指定できるものはLoadVars
オブジェクトかXML
オブジェクトです。
send
メソッドを使用する場合
- サーバアプリケーションからの返却値がそのままブラウザに表示され、画面遷移が発生します。Webアプリケーションとしての処理を継続する場合はJSP名を返却してください。
- 7行目-12行目
- 通信が成功した場合の処理を記述します。ここでは、テキスト(
textarea
オブジェクト)にrepXML
が保持しているXMLデータを文字列として代入し、画面に表示しています。
■サーバ例外の通知
サーバアプリケーションで例外が発生した場合、ActionScriptオブジェクトには"uji_flashException
"をキーにして例外情報が通知される場合があります。サーバアプリケーションからの例外の通知方法についてはアプリケーション例外が発生した場合のクライアントへの通知方法を参照してください。
サーバアプリケーションが正常に終了しているかどうかは"uji_flashException
"を参照してください。LoadVars
オブジェクトの場合は"uji_flashException
"変数を、XML
オブジェクトの場合は、ルート要素直下のテキストノードを参照してください。
チェックの例を次に示します。
LoadVars
オブジェクトの場合
on (release) {
myLoadVars = new LoadVars();
myLoadVars.uji_bean="mypkg.MyDataBean";
myLoadVars.uji_verb = "myverb";
myLoadVars.value1="3";
myLoadVars.value2="4";
myLoadVars.calMethod="add";
repData = new LoadVars();
repData.onLoad = myOnLoad;
myLoadVars.sendAndLoad("http://[ホスト名]/[サーブレット名]", repData);
function myOnLoad(success){
if(success){
if(repData.uji_flashException != null){
// 例外が返却された場合の処理
} else {
// サーバとの通信が成功した場合の処理
}
}
}
}
|
XML
オブジェクトの場合
on (release) {
myXML = new XML("<root><data>mydat</data></root>");
repXML = new XML();
repXML.onLoad = myOnLoad;
myXML.sendAndLoad("http://[ホスト名]/[サーブレット名]", repXML);
function myOnLoad(success) {
if (success) {
// ルートノード直下の要素に"uji_flashException"が含まれているかチェック
index = repXML.firstChild.nodeValue.indexOf("uji_flashException");
if (index != -1) {
// 例外発生時の処理を記述
// 例外メッセージの取得例("uji_flashException="以降のメッセージを取得)
_root.message.text = repXML.firstChild.nodeValue.substr(index+19);
} else {
_root.message.text = repXML.toString();
}
}
}
}
|
■文字エンコーディングについて
Flash Player 6では、デフォルトの文字エンコーディングがUTF-8
になっています。
ただし、Flashコンテンツの1フレーム目のフレームスクリプト最上部に次の一行を加えることで、文字エンコーディングを"iso-2022-jp
"にすることができます。
詳細はMacromedia社のホームページを参照してください。
System.useCodepage = true;
|
また、Webcoordinatorアプリケーションでは、初期化パラメタuji.defaultEncoding
を利用することで文字エンコーディングを指定することができます。ご使用の環境に合わせて、次の表を参考に文字エンコーディングを設定してください。
UTF-8 を使用する場合 |
iso-2022-jp を使用する場合 |
- [Flashの設定]
- 不要
- [Apcoordinatorの設定]
web.xml でuji.defaultEncoding 初期化パラメタに"UTF-8 "を記載
|
- [Flashの設定]
- "
System.useCodepage = true; "を記載
- [Apcoordinatorの設定]
web.xml でuji.defaultEncoding 初期化パラメタに"iso-2022-jp "を記載
|
All Rights Reserved, Copyright © 富士通株式会社 2000-2005