In theory, the table could detect that it contains no EditableValueHolders,
no ShowDetails, and no ActionSource components, and decline to run decode(),
etc. - but that'd break any third-party components that wanted to go into
the table, had events, and weren't one of these known types.

-- Adam


On 9/6/07, Vadim Dmitriev <[EMAIL PROTECTED]> wrote:
>
> Hi, Renzo.
> I don't think any component would do such a thing internally. After all,
> component just evaluate EL and can't figure out, when it is undesired.
> As a solution I can recommend you to use
> "FacesContext.getCurrentInstance().getRenderResponse()" to detect, when
> getter is called during renderResponse phase:
>
> public Object getSomeVal()
> {
>     if( _someField != null &&
> FacesContext.getCurrentInstance().getRenderResponse()  )
>     {
>         _someField = getDataFromSlowExternalSource();
>     }
>     return _someField;
> }
>
> In the following code snippet, request to some external data source will
> be issued only once in the renderResponse phase.
>
>
> Renzo Tomaselli wrote:
> > Hi all, in all cases where a readonly tr:table is involved - and
> > needed data are to be loaded from the business layer - then this
> > occurs twice.
> > Once during restore view (decode) and again during rendering (encode).
> > The first time is fairly useless for a readonly component, but the
> > overall doubling can be expensive while loading from a complex
> > business layer (e.i. a db).
> > AFAIK this is a JSF side-effect which should affect all components,
> > not a Trinidad issue. Trees are affected by the same problem as they
> > are typically readonly.
> > I just wonder if anybody else got the same conclusion and there is any
> > workaround.
> > The only one I can think about concerns detecting current phase and
> > skipping loading while restoring a view (e .g. returning null as a
> > value attribute, or at least an empty collection).
> > Any better suggestion ?
> >
>

Reply via email to