トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   とにかくFLASH【FLASHに関して全般】
     Webサービスクラスのデータバインディングについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nanao
Åê¹ÆNo.9175
投稿日時: 2004-7-15 10:24
新米
居住地:
投稿: 7
使用環境:
Windows2000 Pro SP4
FlashMX 2004 (7.0.1)
Flash Player7
Webサービスクラスのデータバインディングについて
こんにちは nanaoと申します。


早速ですがActionScriptからWebサービスクラスを使用して、Object型
のデータをDataGridに表示しようとしています。

ActionScriptからのバインディング方法がわからず悩んでいます。
どなたかご存知の方にご教授願えればと思い投稿しました。

内容は以下の通りです。

1.受信するObject型(Javaで作成し、Webサーバ上に配置)
(1)内容の一部

  public class Name {
    private String Name_ugi;
    private String Name_mei;
    private int    age;
  }


(2)それぞれのプロパティーにsetter,getterメソッドを設定して
います。


2.実行確認し、PendingCallオブジェクトのresponseプロパティー
をtraceすると、XML形式で目的のデータが受信できていることが
確認できています。
(1)確認したActionScript


  rtn_NameMst = NameMaster.getNameArray();
  rtn_NameMst.onResult = function(result) {
    trace(rtn_NameMst.response);
  }


(2)NameMasterはNameオブジェクトのArrayを内包しており
getNameArray()を呼び出すことにより、Nameオブジェクト
配列(Name[])を返すようにしています。

(3)resultをトレースすると[object Object],
[object,Object]・・・と表示され、これをDataGridの
dataProviderにセットすると何も表示されません。

3.WebServiceConnectorを使用し、GUI画面でバインディング設定
すると正常に表示されるため、処理全体は問題ないと考えて
います。

4.環境は以下の通りです。
OS:Windows2000 Pro SP4
Flash:7.0.1
Player:7
Webサーバ:Apache AXIS


データバインディングする必要があると思い、DataProviderやデータ
バインディングクラスのヘルプを参照したり、MacromediaのHPに掲載
されているドキュメントを見たのですが、理解することが出来ません
でした。(WebServiceConnectorを使用し、GUI画面でバインディング
する方法は紹介されているのですが)


どなたかご存知の方ご教授願います。
ごんざえもん
Åê¹ÆNo.9189
投稿日時: 2004-7-15 13:39
常連
居住地: 北かんとー
投稿: 123
使用環境:
Windows XP SP3
Windows7
Windows VISTA
MacOSX10.6
FlashMX2004
Flash8 pro
Flash CS6 (体験版…)
Re: Webサービスクラスのデータバインディングについて
初めまして、gonzaemonです
Flash始めたばかりで力になれるかわかりませんが・・・

私も近いことをやっています。私の場合はDataSetとDataGridをバインドさせ、
WebServiceクラスの結果をDataSetコンポーネントにいれています。

//import
import mx.data.binding.*;

//DataSetのスキーマ設定
DataSet.schema = new XML('
<properties>
<property name="社員番号">
<type name="String" original="false" />
</property>
<property name="社員名">
<type name="String" original="false" />
</property>
//・
//・DataGridに表示する列名分
//・
</properties>');


//バインディングの設定
var src = new EndPoint();
src.component = DataSet; //インスタンス名をいれる
src.property = "dataProvider";

var dest= new EndPoint();
dest.component = DataGrid; //インスタンス名をいれる
dest.property = "dataProvider";

new Binding(src, dest);

//結果をDataSetにいれる
DataSet.items = wsResult;

なんかの参考になれば幸いです


----------------
gonzaemon

nanao
Åê¹ÆNo.9275
投稿日時: 2004-7-19 11:42
新米
居住地:
投稿: 7
使用環境:
Windows2000 Pro SP4
FlashMX 2004 (7.0.1)
Flash Player7
Re: Webサービスクラスのデータバインディングについて
gonzaemonさん はじめまして

即答していただき、誠にありがとうございます。
当方の確認が手間取ってしまい、お礼を申し上げることが遅くなって
すみませんでした。


gonzaemonさんのアドバイス大変参考になりました。
ありがとうございます。

gonzaemonさんのアドバイスを元に、より良い方法をお礼にお返し
できたらと思い自分なりに工夫したのですが、全て玉砕されてしまい
ました。

やはり、WebServiceConnecterではObject型の構造を意識せず
バインドできるのに、Webサービスクラスでは意識しないといけない
のは、気になるところです。

GUIでバインドしている、内部の動きはどうなってる
のだろうか...。

SOAPParameterオブジェクトの存在も気になるところですし、
MacromediaのWebサービスクラス関係の説明が不足している気が
します。
ごんざえもん
Åê¹ÆNo.9290
投稿日時: 2004-7-20 10:04
常連
居住地: 北かんとー
投稿: 123
使用環境:
Windows XP SP3
Windows7
Windows VISTA
MacOSX10.6
FlashMX2004
Flash8 pro
Flash CS6 (体験版…)
Re: Webサービスクラスのデータバインディングについて
引用:

nanaoさんは書きました:
やはり、WebServiceConnecterではObject型の構造を意識せず
バインドできるのに、Webサービスクラスでは意識しないといけない
のは、気になるところです。

スキーマにいれるXMLを取得することはできないのですかねぇ・・・?

また、これも疑問なんですが、
Webサービスクラスを使用する場合、ライブラリにWebServiceClassesを配置しなくても使える方法はあるのですかね?自分で作成したクラスからWebサービスクラスを使いたいのですが・・・


----------------
gonzaemon

nanao
Åê¹ÆNo.9294
投稿日時: 2004-7-20 11:48
新米
居住地:
投稿: 7
使用環境:
Windows2000 Pro SP4
FlashMX 2004 (7.0.1)
Flash Player7
Re: Webサービスクラスのデータバインディングについて
gonzaemonさんこんにちは

引用:
スキーマにいれるXMLを取得することはできないのですかねぇ・・・?


gonzaemonさんの最初のアドバイスを拝見した時、私も同じことを
考えました。
そこで、SOAPParameterがそれにあたるのではと思い、試してみた
のですが、valueプロパティ,elementプロパティー共に、undefind
で行き詰まっている状態です。


rtn_NameMst = NameMaster.getNameArray();
rtn_NameMst.onResult = function(result) {
  var SOAP_PARM = rtn_NameMst.getOutputParameters();
  trace(SOAP_PARM.element);
}


SOAPParameterのvalueプロパティ,elementプロパティーへの
アクセス方法はご存知ですか?


引用:
Webサービスクラスを使用する場合、ライブラリにWebServiceClassesを配置しなくても使える方法はあるのですかね?自分で作成したクラスからWebサービスクラスを使いたいのですが・・・


これは「mx.services」パッケージクラスをインポートすれば使える
用になるのではと思います。
(まだ、Flashでオリジナルクラスを作ったことがないので、自信が
ありません。すみません。)
ごんざえもん
Åê¹ÆNo.9295
投稿日時: 2004-7-20 13:22
常連
居住地: 北かんとー
投稿: 123
使用環境:
Windows XP SP3
Windows7
Windows VISTA
MacOSX10.6
FlashMX2004
Flash8 pro
Flash CS6 (体験版…)
Re: Webサービスクラスのデータバインディングについて
引用:

nanaoさんは書きました:


rtn_NameMst = NameMaster.getNameArray();
rtn_NameMst.onResult = function(result) {
  var SOAP_PARM = rtn_NameMst.getOutputParameters();
  trace(SOAP_PARM.element);
}


SOAPParameterのvalueプロパティ,elementプロパティーへの
アクセス方法はご存知ですか?

valueプロパティは、
var SOAP_VALUE = SOAP_PARM[0].value;
なんかでは取れないですかね?

引用:
これは「mx.services」パッケージクラスをインポートすれば使える
用になるのではと思います。

ライブラリに配置しておかないとインポートが出来ないんですよ


----------------
gonzaemon

ごんざえもん
Åê¹ÆNo.9348
投稿日時: 2004-7-22 16:20
常連
居住地: 北かんとー
投稿: 123
使用環境:
Windows XP SP3
Windows7
Windows VISTA
MacOSX10.6
FlashMX2004
Flash8 pro
Flash CS6 (体験版…)
Re: Webサービスクラスのデータバインディングについて
gonzaemonです。

[スキーマ]タブで、「サンプルXMLファイルからスキーマの読み込み」を選択し、XMLファイルを選択すると、読込んだXMLのデータ構造が[スキーマ]タブに表示されますが、これをスクリプトで行うことは可能ですか?
やりたい事はスクリプトでの、Webサービスの結果に対するスキーマの自動生成です。

ご存知の方がいましたらご教授ください。

別スレッドたてた方がよければそうします


----------------
gonzaemon

nanao
Åê¹ÆNo.9350
投稿日時: 2004-7-22 19:27
新米
居住地:
投稿: 7
使用環境:
Windows2000 Pro SP4
FlashMX 2004 (7.0.1)
Flash Player7
Re: Webサービスクラスのデータバインディングについて
nanaoです。

gonzaemonさん!!!
でましたよ!!!

gonzaemonさんの[スキーマ]タブが大ヒントでした!!!

やり方は次の通りです。

1.DataGridの[スキーマ]タブで、dataProviderのdatatypeを
Array => Objectに変更

2.PendingCallオブジェクトのonResultイベントで取得する
resultパラメータをDataGridのdataProviderにセットする
だけです。

  rtn_NameMst.onResult = function(result) {
    DataGridのインスタンス.dataProvider = result;
  }


大ヒントありがとうございます。

gonzaemonさんの疑問点、今試し中です。
ごんざえもん
Åê¹ÆNo.9356
投稿日時: 2004-7-23 11:29
常連
居住地: 北かんとー
投稿: 123
使用環境:
Windows XP SP3
Windows7
Windows VISTA
MacOSX10.6
FlashMX2004
Flash8 pro
Flash CS6 (体験版…)
Re: Webサービスクラスのデータバインディングについて
gonzaemonです。

まず前回の質問を訂正させて下さい。
DataSetのスキーマの自動生成の件でしたが、どうやら自動生成されているみたいでした・・・。ただ、スキーマに[validation]というタグがあり、それが原因でグリッドにwebサービスの結果やArray型の内容を表示することが出来ないという事態でした

以下が確認したソースです。

my_ds.items = aList; //aList(Array型)
trace(my_ds.schema); //スキーマの自動生成されたことの確認

ここで、出力されたXML形式の内容をコピーします。

my_ds.items = aList; //aList(Array型)
my_ds.schema = ここに貼り付け
//DataSetとDataGridのバインディングのソース(略)

さらに貼り付けた内容から[validation]タグを削除すると、グリッドにaListの内容が表示されるので[validation]タグが原因と考えました。

実行時に[validation]タグ内を見てみると、[className]に「mx.data.Str」等のクラス名が、そして[cls]には「undefined」が入ってます。この「undefined」が気になります・・・。これはクラスを見にいけてないという事なのでしょうか?

1、[validation]タグで、クラスを見にいけてないならそれはなぜか?
2、[validation]タグが無いスキーマを自動生成する方法。

わかる方がいましたらご教授お願い致します。


引用:

nanaoさんは書きました:
1.DataGridの[スキーマ]タブで、dataProviderのdatatypeを
Array => Objectに変更

2.PendingCallオブジェクトのonResultイベントで取得する
resultパラメータをDataGridのdataProviderにセットする
だけです。

  rtn_NameMst.onResult = function(result) {
    DataGridのインスタンス.dataProvider = result;
  }


nanaoさんこんにちは。
目的の事が出来て良かったですね
引用:

gonzaemonさんの疑問点、今試し中です。

何かわかりましたらよろしくお願いします。
ごんざえもん
Åê¹ÆNo.9476
投稿日時: 2004-7-27 17:21
常連
居住地: 北かんとー
投稿: 123
使用環境:
Windows XP SP3
Windows7
Windows VISTA
MacOSX10.6
FlashMX2004
Flash8 pro
Flash CS6 (体験版…)
Re: Webサービスクラスのデータバインディングについて
自己レスです。

var temp:mx.data.types.Str;
var temp:mx.data.types.Num;
を入れることにより解決しました

参考
http://www.fumiononaka.com/TechNotes/Flash/FN0405002.html#04_02
(野中文雄さんのサイトです。)


----------------
gonzaemon

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops