[
https://issues.jboss.org/browse/RF-13278?page=com.atlassian.jira.plugin.s...
]
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@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