CFAdapterを利用することで、Flex2でJavaのRemoteObjectを呼び出すことはできるようになりました。
でも、ActionScriptのクラスをパラメータとして渡すと、JavaのクラスとうまくマッピングできずASObjectになっていました。
Flex1.5では、ActionScriptのクラスで_remoteClassを宣言することでうまくマッピングできていました。
Flex2.0では、同じようにやってもうまくいきませんでした。
ActionScript3で変更になったようです。
registerClassAlias を使うことでうまくできるようになりました。
Flex1.5でやっていた、_remoteClassを宣言する方法ではパラメータは渡るのですが、ASObjectにマッピングされてしまいます。
ActionScriptのクラスで_remoteClassを宣言する
package amftest.samples { public class Person { var name:String; var age:int; var birthday:Date; var _remoteClass:String; public function Person(){ this._remoteClass= "amftest.samples.Person"; } : : }
RemoteObjectの宣言(mxml)
<mx:RemoteObject id="hello" destination="Hello" result="DataResult(event)" />
RemoteObjectの呼び出し(mxml)
hello.setPerson(person);
RemoteObjectで呼び出されるJavaのクラス
public String setPerson(Person person){ }public String setPerson(ASObject aso){
}
上記のように書くと、Personを引数にしたメソッドが呼ばれて欲しいのですが実際にはASObjectが引数のメソッドが呼ばれます。
setPerson(person:Person) -> setPerson(ASObject aso) <-こっちが呼ばれる。
setPerson(person:Person) -> setPerson(Person person) <-こっちが呼ばれて欲しい!
JavaAdapterを使い始めたころからずっと悩んでいました。
あきらめてFlex User Groupに書いたCFAdapterのインストールに追記しようかと思いCFAdapterとともにDownloadできるサンプル(UserManager)のクラスをみると、registerClassAlias を使ってマッピングをしているようです。
早速mxmlのリファレンスをみて試してみました。
そうしたら....
できました(^ー^)v
Flex2では、registerClassAliasを使うことでJavaのクラスとActionScriptのマッピングができるようです。
package amftest.samples { import flash.net.*; public class Person { var name:String; var age:int; var birthday:Date; public function Person(){ registerClassAlias("amftest.samples.Person", Person); } : : }
AS1のときは、ObjectRegisterClassを使っていました。
FlashMX 2004/AS2では、ムービークリップのリンケージでクラスを関連付けしていました。
Flex1.5/AS2では、_remoteClassをを使いました
Flex2.0/AS3ではregisterClassAliasで関連付けしました。
ASのバージョンとアプリケーションでどうするのが正解なのかわかりません。
誰か知っている人、またはまとめてあるページがあったら教えてください。m(__)m
あとは配列を渡したときに、配列の要素が正しく変換されるのかを確認したいと思います。
Macromedia Flex 2.0 MXML and ActionScript Language Reference
registerClassAlias
http://livedocs.macromedia.com/labs/1/flex/langref/flash/net/package.html#registerClassAlias()
Download Flex Builder 2 - ColdFusion Adapter Sample Files
http://labs.macromedia.com/wiki/index.php/CF_Adapter#Sample_Applications
配列の罠(ひがやすをblog)
http://d.hatena.ne.jp/higayasuo/20041014#1097753400
この記事に対するコメント