[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3008) Page fragment caching impossible with coarse-grained rendered attribute evaluation in JSF

Christian Bauer (JIRA) jira-events at lists.jboss.org
Mon May 19 08:25:59 EDT 2008


Page fragment caching impossible with coarse-grained rendered attribute evaluation in JSF
-----------------------------------------------------------------------------------------

                 Key: JBSEAM-3008
                 URL: http://jira.jboss.com/jira/browse/JBSEAM-3008
             Project: Seam
          Issue Type: Task
          Components: JSF Controls, JSF Integration
            Reporter: Christian Bauer


The evaluation of the JSF rendered="true|false" attribute conflicts with the Seam page fragment cache.

 <s:cache region="test" key="foo123">
    <h:outputText value="FOO" rendered="#{foo.bar}"/>
</s:cache>

The rendered attribute of the child components is ALWAYS evaluated, in potentially any JSF phase (especially APPLY REQUEST VALUES and RENDER RESPONSE of course).  No switch or combination of JSF component settings and renderers is able to stop that evaluation; you can not say "Do not call isRendered() on any child component of <s:cache>". 

So any rendered-attribute expression that is costly (e.g. rendered="#{not empty myBackingBean.resultList}") will not be cached. This also means that there is a disconnect between what is finally rendered by s:cache (some HTML from the cache) and what the evaluation of the rendered attribute might produce. This is extremely difficult to work around. One approach is to only use lightweight rendered="#{foo}" expressions that can be evaluated many times without much cost.

I don't see any way to fix this unless the JSF specification is changed and a more sane model of rendering/non-rendering switches is introduced. The rendered attribute is used for all kinds of purposes inside the JSF engine, most of them have nothing to do with rendering (e.g. it is used in APPLY REQUEST VALUES to detect which bindings need to be evaluated back onto the model).



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list