Re: synchronizesVariablesWithBindings()
Re: synchronizesVariablesWithBindings()
- Subject: Re: synchronizesVariablesWithBindings()
- From: Chuck Hill <email@hidden>
- Date: Tue, 21 Aug 2012 14:29:05 -0700
On 2012-08-21, at 1:59 PM, WebObjects TORAcom wrote:
> 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?
The same way. Just put this in EditAddress:
private Address address;
public void awake() {
super.awake();
address = null;
}
public Address exampleValue() {
if (address == null) {
address = (Address) valueForBinding("address");
}
return address;
}
public void setAddress(Address newValue) {
if (ERXExtensions.saveDifferent(address(), newValue) {
setValueForBinding(newValue, "address");
address = newValue;
}
}
Then use WOTextFields connected to address.country, address.state, etc.
Chuck
>
> On 21/08/2012, at 14:22, Chuck Hill <email@hidden> 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
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
>
>
--
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@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden