Thanks Doug,
I was able to print the child object properties using the 
labelFunction, but the problem is the column is editable, so when 
ever i click that filed it's changing back to [object.object].
Do you have any samples using as script printing child object 
properties in datagrid? 
BTW i changed logger level="Debug in gateway-config file and it's 
was printing all the parent child values from Java.

i appreciate your help.

--- In [email protected], "douglowder" <[EMAIL PROTECTED]> 
wrote:
>
> I think that design is fine.  I use a similar approach, except 
that my
> POJOs are a combination of entity objects + dataaccess method, i.e.
> each class has a getList() method that returns a list of all known
> instances of that type.  I chose that approach because these were
> POJOs written explicitly with Flex in mind, since this was a new
> project with no existing codebase to work from.  It's entirely up 
to
> you how much separation you want between data access and the 
objects
> themselves.
> 
> A case where you might be forced to use a facade class is when you
> have a private member that is determined dynamically in code and
> accessed only through a getter.  In this instance, you could write
> another class that calls the first class's getter and sets a public
> member variable to the results.  This new class would be what your
> RemoteObject calls from Flex.
> 
> 
> Doug
> 
> --- In [email protected], "sshriyan27" <sshriyan27@> 
wrote:
> >
> > Thanks Doug,
> > Now i understand. Let me ask you a question then, my design 
consists 
> > of 2 parts, i have entity objects and dataaccess objects, each 
time 
> > i do a method call in dataaccess obj and it returns either a 
> > collection of entity objects or single entity objects to client.
> > 
> > Is this a right way to do or should i use some facade patterns, 
what 
> > do you think, since i'm coming struts background it's kind of 
> > learning curve for me using flex. I'm not using any EJB's for 
our 
> > application. It's a simple 3 tier arch.
> > 
> > thanks
> > 
> > 
> > 
> > 
> > --- In [email protected], "douglowder" <douglowder@> 
> > wrote:
> > >
> > > It isn't a case of need.  One reason you might *want* to have 
> > public
> > > members in your POJO is for convenience.  Flex will 
automatically
> > > handle conversion of Java strings (as well as several other 
types;
> > > check the documentation) to actionscript, so if your 
RemoteObject
> > > returns a collection of POJOs with public String members you 
can 
> > plug
> > > that list directly into a grid's dataprovider without any extra
> > > actionscript code.  This would correspond to collections of 
ClassA 
> > and
> > > ClassB objects, which map nicely to what dataProviders 
expect.  You
> > > cannot, however, pass a list of Class1 POJOs and expect the 
> > datagrid
> > > to display Class1.ClassA.A1, Class1.ClassB.B1, etc., without 
doing
> > > some extra work on the actionscript side.  See the difference?
> > > 
> > > Now, this doesn't mean you *have* to do things either one way 
or
> > > another.  I'm just trying to explain what I personally think 
is the
> > > easiest way to get POJO data into a dataGrid in Flex.  If this 
> > still
> > > isn't clear, let me know and I'll try to provide some working 
code.
> > > 
> > > Hope that helps!
> > > 
> > > Doug
> > > 
> > > --- In [email protected], "sshriyan27" <sshriyan27@> 
> > wrote:
> > > >
> > > > Thanks guys for helping me out here, but still i don't 
> > understand 
> > > > why should i need to have public members firstname,lastname 
etc 
> > in 
> > > > the CloserResultsForm form, isn't it involves redundancy and 
> > hard to 
> > > > maintain lots of member variables. 
> > > > 
> > > > all i want is this,
> > > > 
> > > > Class1 instanciate class A, class B, Class A has member 
> > variables 
> > > > A1,A2 and Class B has B1,B2 etc,
> > > > if i want to display A1, B1 values using Class1, 
> > > > i should be saying classA.A1,classA.A2, ClassB.B1, ClassB.B2 
etc,
> > > > i don't want to declare A1,A2 in Class1 again in 2 palces.
> > > > Am i missing something here about my design pattern? May be 
i'm 
> > > > confused.
> > > > Pls help me soon.
> > > > 
> > > > --- In [email protected], "douglowder" 
<douglowder@> 
> > > > wrote:
> > > > >
> > > > > You're almost there!  What you want is for 
CloserDataAccess to 
> > > > return
> > > > > a list of objects that contain firstname and lastname 
> > properties. 
> > > > > What you have now is a list of objects that contain other 
> > objects 
> > > > (the
> > > > > UserProfileForms), which then contain firstname and 
lastname.
> > > > > 
> > > > > If your CloserResultsForm java class had public members 
> > firstname 
> > > > and
> > > > > lastname, initialized by calling the proper getters from
> > > > > UserProfileForm, your datagrid should work.  This wouldn't 
even
> > > > > require the separate ActionScript classes for 
> > CloserResultsForm and
> > > > > UserProfileForm.
> > > > > 
> > > > > 
> > > > > Doug
> > > > > 
> > > > > 
> > > > > --- In [email protected], "sshriyan27" 
> > <[EMAIL PROTECTED]> 
> > > > wrote:
> > > > > >
> > > > > > Thanks but still not working i made them private now.
> > > > > > I'm totally lost with action script and object mapping.
> > > > > > Do i need to use action script for the value objects i 
have, 
> > if 
> > > > that 
> > > > > > so is there any easy way to write action scripts same as 
the 
> > > > java 
> > > > > > objects. 
> > > > > > 
> > > > > > 
> > > > > > <mx:Application 
> > xmlns:mx="http://www.macromedia.com/2003/mxml"; 
> > > > > > initialize="initApp()" xmlns:i2view="view" 
pageTitle="Test 
> > > > > > Application">
> > > > > >     
> > > > > >  <mx:Script>
> > > > > >   import src.com.flex.form.*;
> > > > > >   
> > > > > >   var users: Array;
> > > > > >   var upForm: UserProfileForm;
> > > > > >   var closerResultsForm: CloserResultsForm;
> > > > > >   var userList: Array;
> > > > > >   var resultList: Array;
> > > > > >   
> > > > > >         function initApp() {
> > > > > >              ro.getResults(); // returns 
> > CloserResultsForm as a 
> > > > > > collection
> > > > > >                
> > > > > >     }
> > > > > > 
> > > > > >         function getUserList_result(event) {
> > > > > >             userList=event.result;
> > > > > >     }
> > > > > >             
> > > > > >     function getResultList_result(event) {
> > > > > >            resultList=event.result;
> > > > > >                
> > > > > >         }
> > > > > >      
> > > > > > 
> > > > > > </mx:Script>
> > > > > >  
> > > > > >  <mx:RemoteObject id="ro" 
> > > > > > source="com.chl.dataaccess.CloserDataAccess">
> > > > > >     <mx:method name="getResults" 
result="getResultList_result
> > > > > > (event)"/> 
> > > > > > </mx:RemoteObject>
> > > > > >  
> > > > > > <mx:DataGrid id="dg" dataProvider="{resultList}" 
> > width="838"  
> > > > > > editable="true" showHeaders="true">
> > > > > >             <mx:columns>
> > > > > >               <mx:Array>  
> > > > > >                 <mx:DataGridColumn 
columnName="firstname" 
> > > > > > headerText="Firstname"/>
> > > > > >                 <mx:DataGridColumn columnName="lastname" 
> > > > > > headerText="Lastname"/>
> > > > > >               </mx:Array> 
> > > > > >         </mx:columns>        
> > > > > > </mx:DataGrid>
> > > > > > 
> > > > > > 
> > > > > > ** This is the situation i'm in now, we're going to 
develop 
> > new 
> > > > apps 
> > > > > > using RIA technology, we don't have time to learn action 
> > scripts 
> > > > or 
> > > > > > any other vedor specific scripts. so i'm trying to 
convince 
> > that 
> > > > > > flex is the best solution, but it looks like flex dev is 
not 
> > > > rapid 
> > > > > > as what i saw from demo, still lots of manual coding has 
to 
> > be 
> > > > done. 
> > > > > > May be i'm not understanding fully about flex.
> > > > > > 
> > > > > > So can you guys tell me whether i should use flex or 
> > coldfushion 
> > > > or 
> > > > > > ajax with struts as i did before.
> > > > > >  
> > > > > > Thanks
> > > > > > 
> > > > > > 
> > > > > > --- In [email protected], "douglowder" 
> > > > <[EMAIL PROTECTED]> 
> > > > > > wrote:
> > > > > > >
> > > > > > > Ah, it looks like you have taken both my *and* Dave's 
> > advice, 
> > > > when 
> > > > > > you
> > > > > > > really only needed to do one or the other.  So, if you 
> > don't 
> > > > have a
> > > > > > > problem with making your firstname and lastname 
variables 
> > > > public in
> > > > > > > your UserProfileForm POJO (which you might, since it 
kind 
> > of 
> > > > > > defeats
> > > > > > > the purpose of getters and setters), then just pass 
your 
> > > > datagrid a
> > > > > > > collection of UserProfileForms:
> > > > > > > 
> > > > > > >    <mx:DataGrid 
dataProvider="{myUserProfileFormCollection
> > }" />
> > > > > > > 
> > > > > > > This will display the entire object in the datagrid.  
If 
> > you 
> > > > only 
> > > > > > want
> > > > > > > to see certain fields, or want to specify a specific 
> > order, 
> > > > define
> > > > > > > columns for the datagrid like so:
> > > > > > > 
> > > > > > >    <mx:DataGrid 
dataProvider="{myUserProfileFormCollection
> > }">
> > > > > > >         <mx:columns>
> > > > > > >             <mx:Array>
> > > > > > >                 <mx:DataGridColumn 
columnName="firstname"
> > > > > > > headerText="First Name"/>
> > > > > > >                 <mx:DataGridColumn 
columnName="lastname"
> > > > > > > headerText="Last Name"/>
> > > > > > >             </mx:Array>
> > > > > > >         </mx:columns>
> > > > > > >    </mx:DataGrid>
> > > > > > > 
> > > > > > > If, however, you want to keep the members variables of 
> > your 
> > > > objects
> > > > > > > hidden and provide access only through getters and 
> > setters, 
> > > > then
> > > > > > > change the declarations back to private and follow 
Dave's 
> > > > advice.
> > > > > > > 
> > > > > > > I hope that helps!
> > > > > > > 
> > > > > > > Doug
> > > > > > > 
> > > > > > > --- In [email protected], "sshriyan27" 
> > > > <[EMAIL PROTECTED]> 
> > > > > > wrote:
> > > > > > > >
> > > > > > > > Let me send you all my classes, i don't still 
> > understand! 
> > > > Thanks 
> > > > > > for 
> > > > > > > > your help anyway.
> > > > > > > >  
> > > > > > > > public class UserProfileForm {
> > > > > > > > 
> > > > > > > >         public String firstname=null;
> > > > > > > >         public String lastname=null;
> > > > > > > >          
> > > > > > > >         public UserProfileForm(){}
> > > > > > > > 
> > > > > > > >         public String getFirstname() {
> > > > > > > >                 return firstname;
> > > > > > > >         }        
> > > > > > > >         public void setFirstname(String firstname) {
> > > > > > > >                 this.firstname = firstname;
> > > > > > > >         }
> > > > > > > >         public String getLastname() {
> > > > > > > >                 return lastname;
> > > > > > > >         }
> > > > > > > >         public void setLastname(String lastname) {
> > > > > > > >                 this.lastname = lastname;
> > > > > > > >         }
> > > > > > > >          
> > > > > > > > }
> > > > > > > > 
> > > > > > > > public class CloserResultsForm implements 
Serializable{
> > > > > > > >         public UserProfileForm userProfileForm;
> > > > > > > >         
> > > > > > > >         public CloserResultsForm(){
> > > > > > > >           userProfileForm=new UserProfileForm();
> > > > > > > >         }
> > > > > > > >         public UserProfileForm getUserProfileForm() {
> > > > > > > >                 return userProfileForm;
> > > > > > > >         }
> > > > > > > >         public void setUserProfileForm
(UserProfileForm 
> > > > > > > > userProfileForm) {
> > > > > > > >                 this.userProfileForm = 
userProfileForm;
> > > > > > > >         }
> > > > > > > >         
> > > > > > > > }
> > > > > > > > 
> > > > > > > > ** my dataaccess returns collection of 
CloserResultsForm 
> > > > > > > > 
> > > > > > > > CloserResultsForm.as file
> > > > > > > > class src.com.flex.form.CloserResultsForm{
> > > > > > > >         public var userProfileForm : UserProfileForm;
> > > > > > > >         
> > > > > > > >         static var registered=Object.registerClass
> > > > > > > > ("com.chl.form.CloserResultsForm", 
> > > > > > > > src.com.flex.form.CloserResultsForm);
> > > > > > > >          
> > > > > > > >           public function CloserResultsForm(){
> > > > > > > >                   this.userProfileForm=new 
UserProfileForm();
> > > > > > > >           }
> > > > > > > > }
> > > > > > > > 
> > > > > > > > UserProfileForm.as file
> > > > > > > > class src.com.flex.form.UserProfileForm{
> > > > > > > >   public  var firstname:String;
> > > > > > > >     public  var lastname:String;
> > > > > > > >         public var _remoteClass;
> > > > > > > >     static var registered=Object.registerClass
> > > > > > > > ("com.chl.form.UserProfileForm", 
> > > > > > src.com.flex.form.UserProfileForm);
> > > > > > > >          
> > > > > > > > } 
> > > > > > > > 
> > > > > > > > How do i print the firstname and lastname in 
datagrid, 
> > am i 
> > > > > > missing 
> > > > > > > > something here.
> > > > > > > > 
> > > > > > > > --- In [email protected], "Dave Wolf" 
> > > > <[EMAIL PROTECTED]> 
> > > > > > wrote:
> > > > > > > > >
> > > > > > > > > Ahh yes, the same J2EE struggles with property 
> > setting.  
> > > > As 
> > > > > > Doug 
> > > > > > > > says
> > > > > > > > > you do not want to be calling a million setters on 
a 
> > > > remote 
> > > > > > object.
> > > > > > > > > You are better off refactoring this to either 
create a 
> > new 
> > > > > > Value
> > > > > > > > > Object, or to treat your existing class itself as 
a 
> > value 
> > > > > > object.  
> > > > > > > > > 
> > > > > > > > > So rather then getting a remote reference to say 
> > > > > > UserProfileForm, 
> > > > > > > > then
> > > > > > > > > calling a million getters and setters, I would 
create 
> > a 
> > > > POJO 
> > > > > > which
> > > > > > > > > returns the UserProfileForm as a return type.  
Then 
> > call 
> > > > all 
> > > > > > your
> > > > > > > > > setters locally, and pass it back up to the server 
as 
> > the 
> > > > > > > > parameter to
> > > > > > > > > another POJO method call.
> > > > > > > > > 
> > > > > > > > > The second option is to add a new Value Object 
> > property to 
> > > > the
> > > > > > > > > UserProfileForm.  Again create the stub, call all 
the 
> > > > setters 
> > > > > > on 
> > > > > > > > the
> > > > > > > > > local value object, then call one call on the 
> > > > UserProfileForm 
> > > > > > to
> > > > > > > > > return this coarsly grained Value Object.
> > > > > > > > > 
> > > > > > > > > You need to keep network calls in mind in your 
> > > > architecture.  
> > > > > > > > There is
> > > > > > > > > a graveyard filled with failed J2EE projects who 
> > ignored 
> > > > the 
> > > > > > > > network
> > > > > > > > > and the effects of not architecting around 
seriously 
> > > > reducing 
> > > > > > the
> > > > > > > > > number and size of remote calls.
> > > > > > > > > 
> > > > > > > > > -- 
> > > > > > > > > Dave Wolf
> > > > > > > > > Cynergy Systems, Inc.
> > > > > > > > > Macromedia Flex Alliance Partner
> > > > > > > > > http://www.cynergysystems.com
> > > > > > > > > 
> > > > > > > > > Email:  [EMAIL PROTECTED]
> > > > > > > > > Office: 866-CYNERGY
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > --- In [email protected], "douglowder" 
> > > > > > <[EMAIL PROTECTED]> 
> > > > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > Flex 1.5 does a pretty good job of automatically 
> > > > translating 
> > > > > > > > Java 
> > > > > > > > > > types to ActionScript, but only for members that 
are 
> > > > > > declared 
> > > > > > > > > > public, not private.  So, if you want to 
continue 
> > using 
> > > > your 
> > > > > > > > getter 
> > > > > > > > > > routines for private members in your existing 
> > classes, 
> > > > be 
> > > > > > > > prepared 
> > > > > > > > > > to make a lot of calls to your remote object.  
You 
> > could 
> > > > > > also 
> > > > > > > > create 
> > > > > > > > > > a new "facade" Java class for mapping purposes, 
> > which 
> > > > would 
> > > > > > have 
> > > > > > > > > > public members for all the variables you want to 
> > expose 
> > > > to 
> > > > > > > > > > ActionScript, and have that class make all the 
calls 
> > to 
> > > > your 
> > > > > > > > > > existing class's getters to initialize those 
public 
> > > > > > members.  
> > > > > > > > You 
> > > > > > > > > > can then refer to the variables by name (the 
same 
> > name 
> > > > as in 
> > > > > > the 
> > > > > > > > > > Java class) from within ActionScript.
> > > > > > > > > > 
> > > > > > > > > > Another thing to keep in mind is that datagrids 
> > expect 
> > > > to be 
> > > > > > > > passed 
> > > > > > > > > > arrays (actually, anything that implements the 
> > > > DataProvider 
> > > > > > > > > > interface) of objects, not a single object.  If 
your 
> > > > Java 
> > > > > > calls 
> > > > > > > > are 
> > > > > > > > > > returning a single object instead of a list of 
> > objects, 
> > > > use 
> > > > > > > > > > mx.utils.ArrayUtil.toArray() on the result to 
> > convert it 
> > > > to 
> > > > > > an 
> > > > > > > > array 
> > > > > > > > > > in ActionScript.
> > > > > > > > > > 
> > > > > > > > > > Doug
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > > --- In [email protected], "sshriyan27" 
> > > > > > > > <[EMAIL PROTECTED]> 
> > > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > I'm new to Flex we're trying evaluate in our 
> > company 
> > > > > > whether 
> > > > > > > > we 
> > > > > > > > > > > should use FLEX or not. Right we have Java, 
Struts 
> > > > based 
> > > > > > > > > > application.
> > > > > > > > > > > 
> > > > > > > > > > > I have a simple question, i have an Object and 
> > still 
> > > > > > strugling 
> > > > > > > > to 
> > > > > > > > > > > map that to an action script and datagrid.
> > > > > > > > > > > How do i display values of UserProfileForm in 
> > > > datagrid, 
> > > > > > like 
> > > > > > > > in 
> > > > > > > > > > > Struts i used to do  
> > > > > > > > CloserResultsForm.userProfileForm.firstname
> > > > > > > > > > (); 
> > > > > > > > > > > Can some one explain this to me. 
> > > > > > > > > > > ** I can get the Single object to get 
displayed 
> > but 
> > > > not 
> > > > > > the 
> > > > > > > > > > > inhertited ones.
> > > > > > > > > > > 
> > > > > > > > > > > public class CloserResultsForm implements 
> > Serializable{
> > > > > > > > > > >   private UserProfileForm userProfileForm;
> > > > > > > > > > > }
> > > > > > > > > > > 
> > > > > > > > > > > public class UserProfileForm {
> > > > > > > > > > >   private String username=null;
> > > > > > > > > > >   private int userid;
> > > > > > > > > > >   private String password=null;
> > > > > > > > > > >   private String firstname=null;
> > > > > > > > > > >   private String lastname=null;
> > > > > > > > > > >   private String roleName=null;
> > > > > > > > > > >    
> > > > > > > > > > >     public UserProfileForm(){
> > > > > > > > > > >            
> > > > > > > > > > >     }
> > > > > > > > > > >  .... // then getters and setters for the above
> > > > > > > > > > > }
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>







--
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

<*> 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