[Seasar-user:14675] Re: [S2BlazeDS]Array 型からjava.util.List型への変換
山田 祐己
[E-MAIL ADDRESS DELETED]
2008年 6月 12日 (木) 19:01:01 JST
近藤(nobu)さん
お世話になります。
山田です。
S2BlazeDSのサンプル「remoteobjectmain.mxml」を以下の様に修正したら
上手くいきました。
------------------------------------------------
○Flex側ソース
<?xml version="1.0" encoding="UTF-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
backgroundColor="#FFFFFF">
<mx:RemoteObject id="srv" destination="productService"/>
<mx:DataGrid id="dg" dataProvider="{srv.getProducts.lastResult}"
width="100%" height="100%" editable="true" />
<mx:HBox>
<mx:Button label="Get Data" click="srv.getProducts()"/>
<!--
この記述では、java側にArrayCollection(Object)で渡ってしまう。
<mx:Button label="Save Data" click="srv.setProducts(dg.dataProvider)"/>
-->
<mx:Button label="Save Data" click="setProducts()"/>
</mx:HBox>
<mx:Script>
<![CDATA[
import flex.samples.entity.Product;
import mx.collections.IList;
import mx.controls.Alert;
private function setProducts():void {
var list:IList = IList(dg.dataProvider);
var condition:Array = new Array();
for (var i:int = 0; i < list.length; i++) {
var product:Product = list.getItemAt(i) as Product;
condition.push(product);
// はじめは、ここで1entity毎に実行していた。
// srv.update(product);
}
srv.setProducts(condition);
Alert.show('更新を完了しました', '完了');
}
]]>
</mx:Script>
</mx:Application>
○java側ソース
/**
* プロダクトのリストを登録(予定)
*
*/
public void setProducts(List<Product> products) {
for(Product product:products) {
log.debug("product.name:" + product.name);
}
}
------------------------------------------------
ここまで
ついでの質問で恐縮ですが、上記例ではscriptを使用して、
dataProviderをcastし直していますが、
ActionScript(MXML)の記述を正しく(?)記載すれば、
こんな、手間な記述は不要でしょうか?
Flexの質問ですみませんが、ご存知であればご指導を戴けますと幸いです。
宜しくお願いします。
以上
山田 祐己(Yuki Yamada)
E-Mail [E-MAIL ADDRESS DELETED]
--nobu<[E-MAIL ADDRESS DELETED]> wrote:
>近藤(nobu)です。
>
>試してみました。勝手に変換してくれました。
>以下のような感じです。HelpKeywordというのは、<Bean>に当たる自作
>クラス(Entity)です。
>
>■Flex側
>private function buttonOnClickHandler(event:MouseEvent):void
>{
> var condition:Array = new Array();
> var item1:HelpKeyword = new HelpKeyword();
> item1.helpKeywordId = 1;
> item1.name = "hoge1";
> condition.push(item1);
>
> var item2:HelpKeyword = new HelpKeyword();
> item2.helpKeywordId = 2;
> item2.name = "hoge2";
> condition.push(item2);
>
> var item3:HelpKeyword = new HelpKeyword();
> item3.helpKeywordId = 3;
> item3.name = "hoge3";
> condition.push(item3);
>
> svr.echo(condition);
>}
>
>■Java側
>public void echo(List<HelpKeyword> message) throws Exception
>{
> ・
> ・
> ・
>}
>
>やってみるもんです。
>AMF3通信で、Collectionの受け渡しは鬼門だと思っていたので、ずっと
>配列しか使っていませんでしたので、勉強になりました。
>_______________________________________________
>Seasar-user mailing list
>[E-MAIL ADDRESS DELETED]
>https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内