[richfaces-issues] [JBoss JIRA] (RF-13278) rich:tab : label, placed in header-facet, can not be refreshed per ajax

Brian Leathem (JIRA) issues at jboss.org
Fri Dec 20 01:18:32 EST 2013


    [ https://issues.jboss.org/browse/RF-13278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12932773#comment-12932773 ] 

Brian Leathem commented on RF-13278:
------------------------------------

To recap:

The component with id _label_ is rendered during a component tree walk when the visited component has a matching id.  If the component is never visited in the tree walk, it is never rendered.  There are two means the _label_ component will be visited/rendered in a tree walk:

# when the tabPanel is rendered, and the tab headers are rendered
# when the tabPanel children/facets are visited

Prior to RichFaces 4.3.4, 2) was the case.  With every component tree walk, every child of every tab was visited, including those that were not visible.  This incurred a significant performance overhead.  With the resolution of RF-13107 the visit was prevented for all non-active tabs.  This is why the _label_ component is no longer visited unless the tabPanel is an explicit render target.

Let's take a look at the performance overhead incurred when tabPanel is a render target. When a tab header is clicked, the active tab (_tabPanel at ActiveItem_) is rendered regardless of the render target.  Then the tabPanel is the render target, the active tab panel, and the tab headers are rendered.  So the only additional overhead incurred is in the rendering of the tab headers.

[~alsha] are you sure you are incurring _ much more performance overhead_?  Do you have any numbers to back this up?  I would presume that you would in fact see a performance increase with 4.3.4 given that the inactive tabs are no longer updated.

                
> rich:tab : label, placed in header-facet, can not be refreshed per ajax
> -----------------------------------------------------------------------
>
>                 Key: RF-13278
>                 URL: https://issues.jboss.org/browse/RF-13278
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-panels-layout-themes
>    Affects Versions: 4.3.4
>         Environment: java 7,
>  tomcat 7, JBoss AS, 
> mojarra, myfaces
> chrome, firefox
>            Reporter: Alexey Shakov
>              Labels: regression
>             Fix For: 4.3.5
>
>   Original Estimate: 2 hours
>  Remaining Estimate: 2 hours
>
> I use ajax to update the header label of rich:tab. That is why label is placed in a header-facet. Since RF 4.3.4 this does not work:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
>   xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:rich="http://richfaces.org/rich" xmlns:a4j="http://richfaces.org/a4j"
>   xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en">
> <h:head>
> </h:head>
> <h:body>
>   
>   <a4j:log hotkey="M" mode="popup" />
>   <h:form id="form" prependId="false">
>     <rich:tabPanel id="tabPanel">
>       <rich:tab header="tab 1">
>         <a4j:commandLink value="click me" action="#{testBean.put('clicks',testBean.clicks + 1)}" render="label" execute="@this" />
>       </rich:tab>
>       <rich:tab>
>         <f:facet name="header">
>           <h:outputText id="label" value="#{testBean.clicks} clicks" />
>         </f:facet>
>       </rich:tab>
>     </rich:tabPanel>
>   </h:form>
> </h:body>
> </html>
> {code}
> testBean is a simple session-scoped HashMap. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the richfaces-issues mailing list