S2Componentタグは、これまでのFlashRemotingやFlex1.5で利用していたAMF0での接続を行うものです。
サーバから返って来たObjectはObject型クラスになる。
AsyncTokenを受け取ることができない。
などの制限はありますが、これまでFlashやFlex1.5などで使っていたロジックをFlex2アプリケーションから呼び出して連携させることができます。
使い方は以下の通りです。
1.ライブラリに追加
ダウンロードしたファイルからs2flex2_swc->dist->s2flex2_swcを取り出し、適当な場所に配置してFlex Build Pathにつなげます。2.mxmlを作成してmxmlnsを追加
mxmlファイルにタグ用のnamespaceを追加します。 swcコンパイル時指定している、"http://www.seasar.org/s2flex2/mxml"を指定します。 これでs2flex_swcに含まれているコンポーネントが使えるようになります。<mx:Application xmlns:mx="http://www.macromedia.com/2005/mxml" xmlns:s2="http://www.seasar.org/s2flex2/mxml" xmlns="*" layout="absolute" >
3.タグの指定をする。
xmlnsの指定をすると、タグのコンポーネントが使えるようになります。 指定は以下のようにします。<s2:S2Component id="amf" destination="addService" result="onResult(event)" fault="onFault(event)" showBusyCursor="true" />
ほとんどRemoteObjectタグと一緒です。
destinationには、mxmlをコンパイルするときに--servicesで指定するファイル(flex-enterprise-services.xmlなど)内で定義されたサービス名を指定します。
4.サーバロジックの呼び出し
S2ComponentのremoteCallメソッドを利用してサーバロジックを呼び出します。amf.remoteCall("calculate2",addDto);
一つ目の引数が呼び出すメソッド名、二つ目以降が引数になります。
上記の例では、calculate2というメソッドにaddDtoというAS3のクラスを渡して呼び出しています。
サーバロジック(java)側でAddDtoを返しているので、マッピングされたAS3のクラスで受け取りたいのですが、型情報が失われてObject型になってしまいます。
データは受け取ることができているので自分でキャストするか、Object型のままで使用するかのどちらかになります。
ダウンロードはこちら
S2flex2 beta1
http://s2flex2.sandbox.seasar.org/ja/index.html
この記事に対するコメント