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.

Reply via email to