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" <[EMAIL PROTECTED]> 
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