Clint,

Your solution was very useful.  This resolves the issue at least 
until Flex learns to deserialize xml to strongly typed classes.

Thanks very much!!

Cliff


--- In [email protected], Clint Modien <[EMAIL PROTECTED]> wrote:
> ya basically... flex deseirializes the soap objects an untyped AS2 
Object 
> tree.
> 
> load the tree manually into you class heirachy with a load 
function in your 
> as2 objects
> 
> here's an example of what i mean... just look @ the load func
> 
> might want to ignore all the event code you probably won't need it
> 
> 
> import mx.events.*;
> class com.ibm.g3.model.bo.Team
> { 
> public var vo:Object = undefined;
> private var origVO:Object = undefined; //concurenccy (future)
> 
> // ----------------- this code is to dispatch events --------------
-------
> public function Team()
> { 
> EventDispatcher.initialize(this);
> this.vo = new Object(); 
> this.origVO = new Object();
> }
> 
> public var addEventListener:Function;
> public var removeEventListener:Function;
> private var dispatchEvent:Function;
> 
> // ------------------ end event dispatch code ------------------ 
> 
> [ChangeEvent("change")]
> public function get teamId():Number{return vo.teamId;}
> public function set teamId(v:Number){vo.teamId = v; dispatchEvent
({ type: 
> "change" });}
> [ChangeEvent("change")]
> public function get dashBoard():Boolean{return vo.dashBoard;}
> public function set dashBoard(v:Boolean){vo.dashBoard = v; 
dispatchEvent({ 
> type: "change" });}
> [ChangeEvent("change")]
> public function get ibmRfpName():String{return vo.ibmRfpName;}
> public function set ibmRfpName(v:String){vo.ibmRfpName = v; 
dispatchEvent({ 
> type: "change" });}
> [ChangeEvent("change")]
> public function get gmRfpName():String{return vo.gmRfpName;}
> public function set gmRfpName(v:String){vo.gmRfpName = v; 
dispatchEvent({ 
> type: "change" });}
> [ChangeEvent("change")]
> public function get UserDetailTree():Array{return 
vo.UserDetailTree;}
> public function set UserDetailTree(v:Array){vo.UserDetailTree = v; 
> dispatchEvent({ type: "change" });}
> 
> public var hasData:Boolean = false;
> 
> // the reason for this load() function is to extract the 
webservice result 
> into this object because
> // we can't assign the webservice result directly to any instance 
of this 
> class (it will over-write it)
> 
> public function load(u:Object)
> {
> //for concurency later
> this.oldVO = u;
> 
> //load the object you could use mx.utils.ObjectUtil.copyProperties 
here
> this.teamId = u.teamId;
> this.dashBoard = u.dashBoard;
> this.ibmRfpName = u.ibmRfpName;
> this.gmRfpName = u.gmRfpName;
> this.gmRfpName = u.gmRfpName;
> // the line below isn't really what i want to do here with this 
data
> //this.UserDetailTree = u.UserDetailTree;
> //this is what we should do
> for(var i = 0; i < u.UserDetailTree.length)
> {
> var userDetail:UserDetail = new UserDetail();
> userDetail.load(u.UserDetailTree[i]);
> }
> //not very pretty i realise but it works
> hasData = true;
> }
> 
> public function toString():String
> {
> return this.ibmRfpName + " - " + this.gmRfpName;
> }
> }
> 
> 
> 
> 
> 
> On 6/17/05, cgobble <[EMAIL PROTECTED]> wrote:
> > 
> > I thought I had resolved the problem by creating classes in
> > ActionScript where the collections are specifically designed as
> > Arrays. The problem seems to be how Flex determines if an object 
is
> > an array or not when it reads the message from the web service.
> > Depending on how I set it up, the problem can appear to be on 
either
> > the Flex side, or the .Net side. It's interesting that I can set 
up
> > a complex class structure that works in Flex with all of the
> > appropriate methods, properties and arrays and it translates to 
the
> > web service just fine. But, when I try to fill my classes with 
the
> > result from the web service, it doesn't recognize the elements 
and
> > instantiate the appropriate class. I must be missing something
> > fundamental.
> > 
> > Cliff
> > 
> > 
> > --- In [email protected], Clint Modien <[EMAIL PROTECTED]> 
wrote:
> > > Is your problem on the flex side or on the .NET side?
> > >
> > >
> > > On 6/16/05, Matt Chotin <[EMAIL PROTECTED]> wrote:
> > > >
> > > > Hmm, seems odd. Can you take a look at the object in a 
debugger
> > and see
> > > > if it's constructed the way you'd expect? Also turn on 
debugging
> > > > (web-service-proxy) and check if we're even sending the phone
> > number across
> > > > the wire. If not you may need to "re-process" the contact 
before
> > executing
> > > > the send to make sure that things are what the web service
> > expects.
> > > >
> > > > Matt
> > > >
> > > > ------------------------------
> > > >
> > > > *From:* [email protected]
> > [mailto:[EMAIL PROTECTED] *On
> > > > Behalf Of *cgobble
> > > > *Sent:* Wednesday, June 15, 2005 9:51 AM
> > > > *To:* [email protected]
> > > > *Subject:* [flexcoders] Re: Collections between Flex and Web
> > services
> > > >
> > > > I am using the mx.utils.ArrayUtil.toArray to bind to a
> > datagrid.
> > > > This makes sure that Flex sees it when there is only 1 item 
in
> > the
> > > > array. However, going back to the service with the entire 
object
> > is
> > > > causing the problem. I've been experimenting with defining
> > classes
> > > > for these objects and I get the same problem when I use an 
array.
> > > >
> > > >
> > > >
> > > > --- In [email protected], "Matt Chotin" 
<[EMAIL PROTECTED]>
> > > > wrote:
> > > > > Check out mx.utils.ArrayUtil.toArray(). You may need to 
call
> > that
> > > > to
> > > > > make sure that when you pass a single item it still gets
> > treated
> > > > as an
> > > > > array.
> > > > >
> > > > >
> > > > >
> > > > > Matt
> > > > >
> > > > >
> > > > >
> > > > > ________________________________
> > > > >
> > > > > From: [email protected]
> > > > [mailto:[EMAIL PROTECTED] On
> > > > > Behalf Of cgobble
> > > > > Sent: Wednesday, June 15, 2005 7:36 AM
> > > > > To: [email protected]
> > > > > Subject: [flexcoders] Collections between Flex and Web 
services
> > > > >
> > > > >
> > > > >
> > > > > Hello,
> > > > >
> > > > > I'm trying to return complex types with collections from a 
web
> > > > > service and everything seems to work fine. But, when I send
> > the
> > > > > type as the input parameter for the web service, if there 
is
> > only
> > > > 1
> > > > > item in the collection it does not get back to the web 
service.
> > > > >
> > > > > For instance, you have a Contact object in a dotnet web
> > service.
> > > > > The Contact has a collection of phone numbers. I simply 
want
> > to
> > > > > pass the entire Contact object back and forth between the 
web
> > > > > service and Flex.
> > > > > I create a method on the web service such as: (VB)
> > > > >
> > > > > Public Sub SaveContact(Contact as Contact)
> > > > >
> > > > > End Sub
> > > > >
> > > > > However, it seems that if I only have 1 phone number, the
> > phone
> > > > > number gets lost in translation, even though the Contact 
info
> > > > comes
> > > > > back correctly. I was able to partially fix this by making
> > sure
> > > > my
> > > > > collections were instantiated in the constructor, but if I
> > nest a
> > > > > collection, it doesn't seem to work right.
> > > > >
> > > > > Any ideas??
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > ________________________________
> > > > >
> > > > > Yahoo! Groups Links
> > > > >
> > > > > * To visit your group on the web, go to:
> > > > > http://groups.yahoo.com/group/flexcoders/
> > > > >
> > > > > * To unsubscribe from this group, send an email to:
> > > > > [EMAIL PROTECTED]
> > > > > <mailto:[EMAIL PROTECTED]
> > > > subject=Unsubscribe>
> > > > >
> > > > > * Your use of Yahoo! Groups is subject to the Yahoo! Terms 
of
> > > > > Service <http://docs.yahoo.com/info/terms/> .
> > > >
> > > >
> > > >
> > > >
> > > > ------------------------------
> > > > *Yahoo! Groups Links*
> > > >
> > > > - To visit your group on the web, go to:
> > > > http://groups.yahoo.com/group/flexcoders/
> > > > - To unsubscribe from this group, send an email to:
> > > > [EMAIL PROTECTED]<flexcoders-
> > [EMAIL PROTECTED]
subject=Unsubscribe<http://[EMAIL PROTECTED]
subject=Unsubscribe>
> > >
> > > > - Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > > > Service <http://docs.yahoo.com/info/terms/>.
> > > >
> > > >
> > 
> > 
> > 
> > 
> > 
> > 
> > Yahoo! Groups Links
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> >





 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to