Hi,

What action is executed if page is rendering for the 1 time?

May be it's not clear design, but I may say that 2 times call to getter is
performance loose. What about conflicts while rendering if bean is not
synchronized?

I don't think the pattern is more important than normal application
behavior.

Thanks,

Olexandr.

-----Original Message-----
From: Detlef Bartetzko [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, December 21, 2005 4:04 PM
To: MyFaces Discussion
Subject: Re: Tobago SheetRenderer calls getter for list twicely.

Hi,

in my opinion its not a good idea to create the model with a getter. The 
getter should only present a reference to the model. The model itself 
should be created explicitely in an action. This leads to a cleaner 
design and makes the whole architecture easier to understand.

Yours,
Pleff

Detlef Bartetzko wrote:

> Hi,
>
> Bernd I think Simon just stated a common issue about faces. He was not 
> talking about the Tobago implementation... hit me if i am wrong.
>
> Yours,
> Pleff
>
>
> Bernd Bohmann wrote:
>
>> Unfortunaly you don't read my description correctly or the subject.
>>
>> In the render phase:
>>
>> SheetRenderer is calling ListDataModel.setRowIndex
>>
>> ListDataModel.setRowIndex is calling ListDataModel.getRowData
>>
>> Then SheetRenderer is calling getRowData.
>>
>> This means a double call for data.get(index)
>>
>> Maybe data.get(index) is call three times
>> but i only analyse the render phase.
>>
>> Bernd
>>
>>
>> Simon Kitching schrieb:
>>
>>> Hi,
>>>
>>> All input components (including tables) call the getter at least twice.
>>>
>>> They need to call the getter during the validation phase, in order 
>>> to know whether to generate ValueChanged events.
>>>
>>> And then they need to call it again at the start of the following 
>>> render phase, because the value may have changed as a result of the 
>>> "update model" phase.
>>>
>>> There's really no way to avoid either of these calls. Possibly 
>>> MyFaces could add a "noValueChanged" property on every component, 
>>> and users could set that to true if they don't care about getting 
>>> ValueChanged events for that component, so the validation step can 
>>> skip trying to compare the current value against the model. 
>>> Hmm..maybe the component could look to see if it has any 
>>> ValueChangeListeners attached, and not try to generate the event in 
>>> that case? I don't know if that's safe though; there might be other 
>>> ways to detect that event than a listener (eg an ancestor component 
>>> which overrides queueEvent). See method UIInput.validate for details.
>>>
>>> If you are sure that your list will *not* change as a result of the 
>>> "update model" phase, then you could do this:
>>>
>>> <code>
>>> private transient DataModel myModel;
>>>
>>> public DataModel getMyModel() {
>>>   if (myModel == null) {
>>>     // create the model, including fetching data
>>>   }
>>>   return myModel;
>>> }
>>> </code>
>>>
>>> This way, you'll create the model during the validation phase (ie 
>>> when the components are trying to determine whether ValueChanged 
>>> events are needed or not) and use the same object during the 
>>> rendering phase. Of course, as described above, that assumes your 
>>> data won't change as a result of the "update model" phase.
>>>
>>> Regards,
>>>
>>> Simon
>>>
>>> Bernd Bohmann wrote:
>>>
>>>> Tobago doesn't call getter for the list twice.
>>>>
>>>> SheetRenderer is calling ListDataModel.setRowIndex
>>>>
>>>> ListDataModel.setRowIndex is calling ListDataModel.getRowData
>>>>
>>>> Then SheetRenderer is calling getRowData.
>>>>
>>>> Maybe we can impove the implementation of ListDataModel.
>>>> (I think we should) :-)
>>>>
>>>> Bernd
>>>>
>>>>
>>>>
>>>>
>>>> Dennis Byrne schrieb:
>>>>
>>>>>> I don't think it's a good idea, because writing getter is more 
>>>>>> logic.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Are you talking about actions and actionListeners?
>>>>>
>>>>> Dennis Byrne
>>>>>
>>>>
>>>
>>>
>>
>
>


-- 
Dipl.-Inform. Detlef Bartetzko - Executive Officer - Atanion GmbH
Software Development - Bismarckstraße 13 - 26122 Oldenburg - Germany
phone +49 441 4082300 - mobile +49 174 9749449 - fax +49 441 4082333
mailto:[EMAIL PROTECTED] - http://www.atanion.com

Reply via email to