Jeff,

I don’t think that conversion of CF arrays to ArrayCollection will be
supported. I think that CF Arrays will always be Arrays in Flex. 

 

For FDS you can define your Products as ArrayCollection because when you
return the Catalog object, basically you’re telling to Fill Products
ArrayCollection property with a CF product array as the source.

 

BTW, I never had to use ArrayUtil.toArray when I know that my object is an
Array in CF.

 

João Fernandes

 

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Battershall, Jeff
Sent: 18 January 2007 16:34
To: flexcoders@yahoogroups.com
Subject: RE: [flexcoders] Slightly OT - The Limitations of CFMX 7.02

 

The type="Product[]" is a way to make the array returned to be an array of
CFC objects. This is a johnny-come-lately syntax addition and I'm not sure
where it is documented. Allows you to write code like:

<cffunction name="getProducts" returntype="com.mycompany.model.Product[]">

<cfset var retArray = ArrayNew(1)/>

<cfloop from="1" to="10" index="i">
<cfset
ArrayAppend(retArray,createObject("component","com.mycompany.model.Product")
)/>
</cfloop>

<cfreturn retArray/>

</cffunction>

And in your delegate class:

public function result(obj:Object):void
{
var event:ResultEvent = ResultEvent(obj);
ModelLocator.getInstance().products = new
ArrayCollection(ArrayUtil.toArray(event.result));
}

Now your ArrayCollection will contain a collection of AS Product objects -
directly translated from CFCs. That works and works great and requires that
you have created a matching AS object to your Product CFC, the how-to of
which has been written up in numerous places.

What is at issue is specifically the ability to have the ArrayCollection
exist as a PROPERTY of your ActionScript PARENT object. Like

<cfcomponent name="Catalog" alias="com.mycompany.model.Catalog">

<cfproperty name="catalog__id" type="numeric"/>
<cfproperty name="catalog_name" type="string"/>
<cfproperty name="products" type="com.mycompany.model.Products[]"/>

</cfcomponent>

[RemoteClass(alias="com.mycompany.model.Catalog")]

[Bindable]
public class Catalog
{
import mx.collections.ArrayCollection;

public function Catalog()
{

}

public var catalog_id:Number;
public var catalog_name:String;
public var products:ArrayCollection;
}

If you passing back a Catalog.cfc instance with the products array
populated, that product array will not be translated over the wire - that's
what I'm seeing and it just may not be supported yet. What I'm doing
currently is to populate my Catalog object in two passes - one to get the
catalog metadata and the other to get the product ArrayCollection. 

Jeff

-----Original Message-----
From: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com>
[mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> ]
On Behalf Of Adam Dorritie
Sent: Thursday, January 18, 2007 8:22 AM
To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> 
Subject: Re: [flexcoders] Slightly OT - The Limitations of CFMX 7.02

On 1/17/07, Battershall, Jeff <[EMAIL PROTECTED]
<mailto:jeff.battershall%40dowjones.com> > wrote:
> I've been using CFMX 7.02's ability translate CFCs to AS objects but 
> have noticed the following limitation:
>
> If I have an array of objects (like CFCs) in my CFC/AS class def - 
> these will not translate over the wire and I'm forced to pull over 
> the array as a separate remoting request.
>
> Example:
> Catalog.cfc has an attribute products of type Product.cfc array. 
> <cfproperty name="Products" type="Product[]"/> Catalog.as has an 
> ArrayCollection of Product objects, i.e., public var 
> Products:ArrayCollection.

I'm confused about the syntax of the <cfproperty> tag you used above. I may
be wrong, but my understanding is that you would specify that Products is an
array like this: <cfproperty name="Products" type="array">. IIRC CF isn't
concerned about the type of an array's content. I would also echo João's
advice to define Products as an Array in your AS class.

--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

 

Reply via email to