Hi Tim, It did the trick, We will test it deeply.
Thanks. On 29/10/2012, at 11:52, Tim Worman <li...@thetimmy.com> wrote: > Also, I have sometimes used this pattern for sub-components like the two you > described (instead of assigning a synchronized EO to a class variable). > > 1. editMember with "member" binding > > public Member member() { > return (Member)valueForBinding("member"); > } > public void setMember(Member newMember) { > //do nothing > } > > 2. editAddress component with "address" binding > > public Address address() { > return (Address)valueForBinding("address"); > } > public void setAddress(Address newAddress) { > //do nothing > } > > Tim > UCLA GSE&IS > > > On Oct 29, 2012, at 8:50 AM, Miguel Torres <w...@toracom.net> wrote: > >> Hi Tim, >> >> I will double check the code today, there is something in it that is calling >> the address() method after the awake() method, before the end of the >> request. I think that's the key of my problem. >> >> Thanks. >> >> >> On 26/10/2012, at 21:28, Tim Worman <li...@thetimmy.com> wrote: >> >>> Miguel: >>> >>> I often use lazy synchronization and I haven't typically needed any kind of >>> component initialization to correct problems. Can you give us a code >>> snippet for the lazy synchronization looks for your subcomponents? >>> >>> Tim >>> UCLA GSE&IS >>> >>> >>> On Oct 26, 2012, at 4:16 PM, Miguel Torres <w...@toracom.net> wrote: >>> >>>> Hi List, >>>> I recently begun using lazy synchronization. Chuck Hill solved some doubts >>>> that I had. >>>> >>>> It works fine in cases Component -- > subcomponent. >>>> >>>> But in cases Component --> subcomponent --> subcomponent is not working >>>> properly. >>>> >>>> I have this scenario: >>>> >>>> 1. A memberCatalog component. (A grid with the member's information). >>>> 2. An editMember sub component with a "member" binding. >>>> 3. An editAddress sub component inside editMenber with an "address" >>>> binding. >>>> >>>> Sub components 2 and 3 use lazy synchronization. >>>> We have a navigation bar in editMember component with a Next Record button >>>> that calls a function that gets the next member and sets it to the object >>>> connected to the edit form. >>>> >>>> This is the case where lazy synchronization is not working properly: >>>> I have 2 members in my catalog. >>>> I select the first one. >>>> >>>> Both, editMember and editAddress loads properly. I see the correct >>>> information of the member and its address. >>>> >>>> I click on Next Record button and this sequence occurs: >>>> >>>> 1. The request begins. The awake method of editAddress is called and all >>>> objects related to the bindings are set to null. >>>> >>>> 2. The awake method of editMember is called and all objects related to the >>>> bindings are set to null. >>>> >>>> 3. The address() method of editAddress is called several times (I do not >>>> know why) and because the address object was set to null previously, the >>>> address object is pull from the parent component. The problem is that the >>>> address that is set is the address of the actual member not the next >>>> member. >>>> >>>> 4. The nextRecord method is called and it gets the new member. >>>> >>>> 5. The request ends. >>>> >>>> 6. The response begins. >>>> >>>> 7. The member() method is called several times and it returns the correct >>>> member because it was set by the nextRecord method previously. >>>> >>>> 8. The address() method is called several times. The problem is that the >>>> address object is not null because of the call of the address() method >>>> (step 3) after the call of the awake method (step 2). >>>> >>>> >>>> I solved it this way: >>>> >>>> Each sub component has an initComponent object of the class Boolean that >>>> is set via bindings. >>>> >>>> Each sub component has an initialize() method that is called by the >>>> appendToResponse method. >>>> >>>> Inside the initialize() method we do task like filling NSArrays connected >>>> to popUpButtons, etc. The basic structure of the method is as follows: >>>> >>>> private void initialize(){ >>>> if(initComponent){ >>>> //// Do my stuff >>>> initComponent = false; // If the user submits the form but the >>>> record does not change initialize does nothing. >>>> } >>>> } >>>> >>>> The change I made is that inside the initialize method I set to null the >>>> objects related to the bindings. That way every time I go to the next >>>> record I set the initComponent's objects to true and it forces the >>>> subcomponents to reset the objects related to the bindings and next time >>>> the address() method is called it pulls the correct address from the >>>> parent component. >>>> >>>> I am not sure if I am solving a problem that was caused by a bad >>>> implementation of lazy synchronization. I have reviewed serveral times the >>>> documentation and my code and I can't find errors (But maybe I see what I >>>> want to see, I am kind of tired). >>>> >>>> So, I will appreciated any comment. >>>> >>>> >>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>> Help/Unsubscribe/Update your Subscription: >>>> https://lists.apple.com/mailman/options/webobjects-dev/lists%40thetimmy.com >>>> >>>> This email sent to li...@thetimmy.com >>> >>> >> > > _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com