[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 メーリングリストの案内