これまでCFAdapterを使ってFlex2アプリケーションからJavaのRemoteObjectにアクセスしていました。
アクセスするところまではできたのですが、いくつかまだ問題点があります。
まず一つ目はActionScriptのクラスをパラメータにしたときに、RemoteObject側で呼び出されるメソッドがASObjectをパラメータにしたものが呼び出されています。
Flex1.5のときには、ASクラスに"_remoteClass"というプロパティを指定しマッピングをとっていました。
class samples.Person {
var _remoteClass:String;
:
:
function Person () {
_remoteClass = "samples.Person";
}
:
:
}
Flex2.0でも同様にマッピングできるかと思い"_remoteClass"で指定しているのですがうまくできていません。
RemoteObject側のログには、パラメータも渡っていることも確認できています。
赤くしている部分をみてもうまくデシリアライズできているように見えるのですが実際に呼ばれているのは、パラメータがASObjectのメソッドになっています。
[Flex] Adapter: java-object called: samples.Hello.setPerson([{age=300, _remoteClass=amftest.samples.Person, name=nod, birthday=Sun Dec 04 23:40:44 JST 2005}])-> 'amftest.samples.Person'
RemoteObjectを使う利点の一つだと思われる、パラメータの自動変換の方法は今後の課題です。どなたかヒントか解決方法を教えてください。
S2Flexの解説(_remoteClassを利用したマッピングの解説)
http://www.seasar.org/s2flex.html
Live docsの説明 Converting data from ActionScript to Java > Typed ObjectsTyped Objects
http://livedocs.macromedia.com/labs/1/flex/00001373.html
この記事に対するコメント