t:dataTable detailStamp does not work well with jsf 2 ajax
----------------------------------------------------------
Key: TOMAHAWK-1535
URL: https://issues.apache.org/jira/browse/TOMAHAWK-1535
Project: MyFaces Tomahawk
Issue Type: Bug
Components: Extended Datatable, JSF2
Affects Versions: 1.1.9
Reporter: Leonardo Uribe
Assignee: Leonardo Uribe
t:dataTable detailStamp facet does not work well with jsf 2 ajax.
The problem is this facet is "special". Other facets are rendered just once,
but this one is supposed to be rendered on every row.
It works more like a h:column that a header facet. Algorithms like visitTree
and invokeOnComponent must take into account this effect.
In some parts there is some code like this:
Object facet =
getFacets().remove(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME);
super.processDecodes(context);
if ( facet != null )
getFacets().put(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME, (UIComponent)facet);
This works well with jsf 1.2 or earlier, but it does not work well with jsf 2
partial state saving. The facet component and its children has its initial
state marked, so if the component is removed/added all state that should be
restored when the view is built is lost, because the listener that tracks
changes on the tree deals with this facet as a new component. In this case, PSS
algorithm is correct, so we need to prevent this addition/removal doing it
right, that means, do not remove it and check if the facet is a detailStamp
facet and process it properly.
Note it is required to create a fix for that one in tomahawk for jsf 1.2 too
but only for invokeOnComponent method.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.