Thanks Chuck and Jesse.

I think I understand the term lazy synchronization and it makes totally sense.

But, how to handle a case like this:

Three entities and their relationships:

User  <-----> Address
Client <-----> Address

I create a reusable component named EditAddress and use it inside two other 
components: EditUser and EditClient. I would pass the Address object via a 
binding.

In the EditAddress I would use WOTextFields connected to the address' 
parameters: address.country, address.state, etc.

How could I do that with lazy synchronization?

Thanks.

Miguel Torres



On 21/08/2012, at 14:22, Chuck Hill <[email protected]> wrote:

> Hi Miguel,
> 
> On 2012-08-21, at 11:19 AM, WebObjects TORAcom wrote:
> 
>> Hi List,
>> 
>> I am trying to implement best practices in our applications, we want to take 
>> control of component's  binding syncrhonization.
>> 
>> First of all I understand that we should override the 
>> synchronizesVariablesWithBindings function like this:
>> 
>> 
>> public boolean synchronizesVariablesWithBindings() {
>>              return false;
>>      }
>> 
>> 
>> 
>> But where in the request - response loop should be the better place to 
>> synchronize our bindings, a lot of time ago (years) somewhere in the 
>> internet I found info that recommends Pull binding's values in the 
>> takeValuesFromRequest(WORequest r, WOContext c) method and Push binding's 
>> values in the appendToResponse(WOResponse r, WOContext c).
>> 
>> I am not sure about that, so we have been working with the automatic 
>> synchronization of our bindings.
> 
> I usually do lazy synchronization, and only do what I need.  Something like 
> this:
> 
> 
> private String exampleValue;
> 
> public void awake() {
>       super.awake();
>       exampleValue = null;
> }
> 
> public String exampleValue() {
>       if (exampleValue == null) {
>               exampleValue = stringValueForBinding("exampleValue");
>       }
>       return exampleValue;
> }
> 
> public void setExampleValue(String newValue) {
>       if (ERXExtensions.saveDifferent(exampleValue, newValue) {
>               setValueForBinding(newValue, "exampleValue");
>               exampleValue = newValue;
>       }
> }
> 
> 
> Chuck
> 
> -- 
> Chuck Hill             Senior Consultant / VP Development
> 
> Practical WebObjects - for developers who want to increase their overall 
> knowledge of WebObjects or who are trying to solve specific problems.    
> http://www.global-village.net/gvc/practical_webobjects
> 
> 
> 
> 
> 
> 
> 
> 
> 


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to