ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
フォーラム一覧   -   トピック一覧
   Flex Data Services 2.0
     ResultEventをEventHandler内で取り込めないのですが・・・
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
pioarai
投稿日時: 2010-4-2 10:59
一見さん
登録日: 2010-4-2
居住地:
投稿: 1
ResultEventをEventHandler内で取り込めないのですが・・・
LiveCycle DataServiceのDeveloper版を試している中で
RemoteObjectでJavaのClassを直接コールしてMySQLの
返してきた結果をArrayListに入れて返そうとしていますが
Debugger上でResultEventの中にデータとして
帰ってきているにもかかわらず、EventHandlerで
ArrayCollectionに代入することができません。
(nullとなってしまいます)

Javaのほうは

package flex.samples.mysqlrpc;

import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import flex.data.DataSyncException;
import flex.data.assemblers.AbstractAssembler;

public class ProductAssembler extends AbstractAssembler {

 public static ArrayList<Product> list;
 public ProductAssembler(){
 }

 public ArrayList<Product> fill() {
ProductService service = new ProductService();
list = service.getProducts();
return list;
 }

こんな感じで、FLEXでのコードは

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()" height="271" viewSourceURL="srcview/index.html">
 <mx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
import mx.utils.ArrayUtil;
   import mx.controls.Alert;
   import mx.rpc.events.ResultEvent;
   import Product;

   [Bindable]
    public static var products: ArrayCollection;
    public static var item: Product;
    public function initApp(): void{
      products = new ArrayCollection;
    }

    public function fill():void {
RPCService.fill();
    }

    public function fillHandler(event:ResultEvent):void {
     var i:int;
     var c:int = event.result.length;

    // nullが入ってしまう。
     products = ( ArrayCollection )(event.result);

// こちらのやり方だとデータが入る。なぜ???
for( i = 0; i < c ; i++ ){   
      products.list.addItem( event.result[i] );
}
 /////////// 中略////////////////////////////////
<mx:RemoteObject id="RPCService" destination="mysql-rpc" fault="faultHandler(event)">
<mx:method name="fill" result="fillHandler(event)"/>
</mx:RemoteObject>

service-config.xmlの関係する場所は
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint" />
<properties>
<polling-enabled>false</polling-enabled>
<serialization>
<ignore-property-errors>true</ignore-property-errors>
<log-property-errors>false</log-property-errors>
<legacy-collection>true</legacy-collection>
<legacy-map>true</legacy-map>
<legacy-xml>true</legacy-xml>
<legacy-throwable>true</legacy-throwable>
</serialization>
</properties>
</channel-definition>

remoting-config.xmlの関係部分は
<adapters>
 <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true" />
</adapters>
<default-channels>
<channel ref="my-amf" />
</default-channels>
<destination id="mysql-rpc">
<properties>
<source>flex.samples.mysqlrpc.ProductAssembler</source>
<scope>application</scope>
</properties>
</destination>

となっております。何かお分かりになるならばアドバイスいただけると助かります。


スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を