2011-06-10 7 views
0

ObjectProxy 개체의 배열을 반환하는 서비스가 있습니다. 이 개체를 사용자 지정 개체 (값 개체)로 캐스팅하고 ArrayCollection을 만들고 싶습니다. 어떻게해야합니까?ObjectProxy 개체의 배열을 사용자 지정 개체로 변환

편집 : 내가 백엔드에 대한 장고와 PyAMF을 사용하고

. 사용자 지정 SQL 쿼리를 작성해야하고 ObjectProxy에서 결과 레코드를 래핑하고 전체 결과를 ArrayCollection으로 보냅니다. event.result의 요소 유형 ObjectProxy의되지만 _list 변수가 null 인 것을 내가 디버깅 할 때

[ArrayElementType("SessionVO")] 
[Bindable] 
private var _list:ArrayCollection; 

private function onSessionResultSuccess(event:ResultEvent):void 
{ 
    _list = new ArrayCollection(event.result as Array)); 
} 

, 나는주의 사항 :

은 여기 내 클라이언트 측 코드입니다. event.result를 반복하여 SessionVO 객체로 _list에 복사하는 것 외에 다른 것이 있습니까?

+1

어떤 백엔드 기술을 통합하고 있습니까? –

답변

2

값 개체에 [RemoteClass] 태그를 사용하면 원격 서비스 호출에서 송수신 할 때 Flex Remoting (Blaze, LCDS)이 값 개체로 변환합니다.

RemoteClass라는의 구문은

[RemoteClass(alias="com.co.custom.remote.class")] <--- point to the remote java/php class def 
Public Class FooBar 
{ 
    public instance variable; 
} 

이 서비스는 다음이 클래스와 당신을 위해 그것을 변환합니다 플렉스 원격의 배열 또는 해시 테이블을 반환 할 수 있습니다. 개체가 불투명해질 수있는 경우가 있습니다. 사용자 지정 마샬링을 수행하기 위해 ObjectProxy 코드를 만들어야 할 수도 있지만 일반적이지 않습니다. RemoteClass 마샬링은 ccomplex 오브젝트 유형, 부속 유형, 오브젝트의 임베디드 오브젝트 등을 처리 할 수 ​​있습니다. AS 측의 모든 오브젝트가 RemoteClass로 입력되는 한, RemoteClass는 예상대로 작동합니다.

0

"ObjectProxy 개체"의 의미를 잘 모르겠습니다. 이미 커스텀 객체 배열이 반환되고있는 것처럼 들립니다.

AMF 게이트웨이의 일부 형태를 살펴 보는 것이 좋습니다. 대부분의 serer 언어에는 AMF 부가 기능이 있습니다. ColdFusion, BlazeDS 및 LiveCycle에 내장되어 있습니다. PHP에는 ZendAMF와 AMFPHP가 있습니다. .NET에는 FlourineFX 및 WebORB가 있습니다. 그것들은 단지 몇 가지 예일뿐입니다.

AMF 게이트웨이에는 자동 변환 기능이 있습니다. 서버 측 객체는 클라이언트 측 객체에 쉽게 매핑 될 수 있습니다. 다음은이를 설명하는 RemoteObject 태그에 대한 정보입니다. 기본적으로 클라이언트 측 객체에 RemoteClass 메타 데이터를 지정하고 일반적으로 서버 측 객체에 매핑 형식을 지정합니다. AMF 게이트웨이는 마술처럼 나머지 전환을 처리합니다.

RemoteObject 결과 처리기에서 반환 된 배열을 ArrayCollection으로 변환하면됩니다. 이 같은 일반적으로 뭔가 :

var resultArray : Array = event.result as Array; 
var resultCollection : ArrayCollection = new ArrayCollection(resultArray); 

이 응용 프로그램의 서버 측 부분을 통제 할 수없는 경우이 결과를 통해 반복 수동으로 클라이언트 측 플렉스 객체로 변환 부착 할 수있다.

0

com.adobe.serializers.utility.TypeUtility를 사용할 수 있습니다.

public function result_handler(event:ResultEvent):void{ 

    var result:Array = TypeUtility.convertListToStrongType(event.result,YourValueObject) as Array; 

} 
0

웹 서비스 속성에서 makeObjectsBindable = "false"로 설정하면 object가 반환됩니다.

<s:WebService id="ws" wsdl="http://`xxxx/mobiledata/MobileDataService.asmx?wsdl" fault="fault(event)"> 
    <s:operation 
     name="GetAll" 
     resultFormat="object" 
     result="GetData(event)" makeObjectsBindable="false" 
     /> 
    <s:operation 
     name="Create" 
     resultFormat="object" 
     result="SaveData(event)" 
     /> 
</s:WebService> 
관련 문제