Interaction with inputCalendar component causes proliferation of commandLinks
if running under ICEFaces.
--------------------------------------------------------------------------------------------------------
Key: TOMAHAWK-968
URL: https://issues.apache.org/jira/browse/TOMAHAWK-968
Project: MyFaces Tomahawk
Issue Type: Bug
Components: Calendar
Affects Versions: 1.1.5
Environment: Myfaces + Tomahawk + ICEFaces
Reporter: Adnan Durrani
Fix For: 1.1.6-SNAPSHOT
In renderResponsePhase the HtmlCalendarRenderer adds as many new commandLinks
as number of days in a month to the HtmlCalendar component, and then delegates
rendering to its children, but it never removes them back after completion of
the rendering, which is fine with myfaces but not if running with Myfaces +
ICEFaces.
As Myfaces creates a new component tree during restoreView, so there is always
a new instance of inputCalendar component with no existing children, while
ICEFaces maintains the component tree for optimization to reduce the latency,
so under ICEFaces the previously created component instance being used and it
gets duplicate children in each and every renderResponsePhase. That is why
rendered page shows proliferated commandLinks.
As decode has been managed by the HtmlCalendarRenderer itself, and commandLinks
never required by any other phases so it would be safe to remove them when
render completes. It would fix the problem with ICEFaces. The following is
suggested change:
HtmlCalendarRenderer.java
public void encodeEnd(FacesContext facesContext, UIComponent component)
throws IOException
{
.....
......
//As inputCalendar component does not have any other child except the
one created during renderResponsePhase
//So it is safe to remove all children
component.getChildren().removeAll(component.getChildren());
}
The above change has been tested with Myfaces and Myfaces + ICEFaces and
everything works fine.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.