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/

