Hi Alan,

the declaration of the urlButtons field in the AS object is a little off.
it might just be that you typed it in, but just in case, it should be:

public var urlButtons:ArrayCollection;


The value type should be converted automatically. I have an application
running that has a list in the java side and maps automatically to an
arraycollection.  have you tried just putting a breakpoint before the
foreach in FB and then inspecting the result, first making sure that the
CatalogItemVOX is actually getting mapped to the response objects you
received.  After that, I'd manually inspect the CatalogItemVOX and see what
its fields are.  so, basically, inspect "data" and make sure its type is
CatalogItemVOX.  use the fb3 debugger too.

/r






On Tue, Apr 29, 2008 at 11:03 AM, Alan Prather <[EMAIL PROTECTED]>
wrote:

>  Jeff,
>
>
>
> According to the documentation, all Java Collections will be automatically
> translated to an ArrayCollection on the front end. That seems to be the case
> for the list of parent VOs, but within them my lists don't translate to
> ArrayCollection. I'm not sure why, but it's something I can expand out in
> Charles, but I can't get it to cast to anything in Flex (EG, trying to cast
> it to ArrayCollection throws an exception. It's really weird.
>
>
>
> Something tells me that the reference to 'external object' in Charles must
> be a clue! Thanks for your input Jeff!
>
>
>
> Help! Anyone? Anyone?
>
>
>
> -Alan
>
>
>
>
>  ------------------------------
>
> *From:* [email protected] [mailto:[EMAIL PROTECTED] *On
> Behalf Of *Battershall, Jeff
> *Sent:* Tuesday, April 29, 2008 1:55 PM
> *To:* [email protected]
> *Subject:* RE: [flexcoders] BlazeDS, List of VOs inside a VOs won't
> translate
>
>
>
> Alan,
>
>
>
> I know in LCDS that there isn't an analog for ArrayCollection.  I'd try
> having your nested VOs be simply  an array and if you need to create an
> ArrayCollection on the client side do so using your array of VOs as the
> source attribute.
>
>
>
> Jeff
>
> -----Original Message-----
> *From:* [email protected] [mailto:[EMAIL PROTECTED] *On
> Behalf Of *Alan Prather
> *Sent:* Tuesday, April 29, 2008 12:08 PM
> *To:* [email protected]
> *Subject:* [flexcoders] BlazeDS, List of VOs inside a VOs won't translate
>
> Hi all,
>
>
>
> I'm having trouble with BlazeDS and a particular VO that lives inside
> another VO. The parent VO translates just fine, but I can't cast the
> ArrayCollection of VOs inside that for the LIFE of me.
>
> Actually the smaller one is a List in Java, so I am trying to cast it to
> ArrayCollection.
>
>
>
> I get the error: (And I know it to be from the below ArrayCollection/listJ
>
> TypeError: Error #1034: Type Coercion failed: cannot convert
> [EMAIL PROTECTED] to mx.collections.ArrayCollection.
>
>
>
> This occurs when I try and iterate through the list of urlButtonVOs. I've
> tried casting it to an ArrayCollection with NO luck.
>
> Charles Web Debugging proxy tags it as an "External Object" and recognizes
> it's Java class name. Every other object is an Object in Charles. What makes
> this one special? It's an AC of a custom Object, which has a definition and
> RemoteClass tag on the Flex side to match.
>
>
>
> On the Java side I have:
>
> public class CatalogItemVOX implements Serializable {
>
>
>
> ……
> protected List urlButtons;
>
> …..
>
> }
>
>
>
> And urlButtons happens to be a List of a class called UrlButtonVO. It
> won't translate to an ArrayCol
>
>
>
> On the ActionScript side I have:
>
>       [RemoteClass(alias=*
> "com.plateausystems.elms.client.struts.learner.catalog.CatalogItemVOX"*)]
>
>       *public* *class* CatalogItemVOX {
>
>             …
>
>
>              public ArrayCollection urlButtons;
>
>             …
>
>       }
>
>
>
>
>
> I'm TOTALLY stuck. The info shows up in Charles, but I can't get it to be
> recognized as an AC of that object type. Here's where the exception is
> thrown: (The for each) casting data.urlButtons to an AC doesn't work either.
> BTW: It's inside an item renderer)
>
>
>
>                   *public* *function* onCreationComplete(): *void*
>
>                   {
>
>                               *var* buttonID: int=0;
>
>                               *for* *each*(*var* button: UrlButtonVO 
> *in*data.urlButtons) {
>
>                                     *var* newButton: URLButton= 
> *new*URLButton();
>
>                                     newButton.id=String(*"button"*
> +String(buttonID));
>
>                                     newButton.label= button.label;
>
>                                     newButton.URL= button.url;
>
>
> newButton.addEventListener(MouseEvent.CLICK,
> buttonClickHandler);
>
>
>
>                                     *this*.addChildAt(newButton,
> buttonID);
>
>                                     buttonID++;
>
>                               }
>
>                   }
>
>
>
> Thanks in advance to anyone that can help!
>
> ______________________________
>
> -Alan Prather
>
> .
>
> The information contained in this e-mail message is intended only for the 
> personal
>
> and confidential use of the recipient(s) named above. This message is 
> privileged
>
> and confidential. If the reader of this message is not the intended recipient 
> or an
>
> agent responsible for delivering it to the intended recipient, you are hereby 
> notified
>
> that you have received this document in error and that any review, 
> dissemination,
>
> distribution, or copying of this message is strictly prohibited.
>
>  
>
> .
> The information contained in this e-mail message is intended only for the 
> personal
> and confidential use of the recipient(s) named above. This message is 
> privileged
> and confidential. If the reader of this message is not the intended recipient 
> or an
> agent responsible for delivering it to the intended recipient, you are hereby 
> notified
> that you have received this document in error and that any review, 
> dissemination,
> distribution, or copying of this message is strictly prohibited.
>
>

Reply via email to