[ http://issues.apache.org/jira/browse/TOMAHAWK-494?page=all ]

Martin Marinschek resolved TOMAHAWK-494.
----------------------------------------

    Fix Version/s: 1.1.4-SNAPSHOT
       Resolution: Fixed
         Assignee: Martin Marinschek

Thanks to Val Blant.

> detailStamp facet is decoded/validated/updated twice
> ----------------------------------------------------
>
>                 Key: TOMAHAWK-494
>                 URL: http://issues.apache.org/jira/browse/TOMAHAWK-494
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>    Affects Versions: 1.1.2
>            Reporter: Val Blant
>         Assigned To: Martin Marinschek
>             Fix For: 1.1.4-SNAPSHOT
>
>
> All input fields in detailStamp facet will be processed twice. 
> The first time they will be processed from UIData.processFacets() without the 
> proper context set up! (i.e. setRowIndex()) is not executed at all.
> The second time the facet will be processed with proper context from 
> org.apache.myfaces.component.html.ext.HtmlDataTable.processDetails()
> Even though the facet is eventually processed correctly, this behavior is not 
> harmless as it has serious repercussions for valueChangeListeners or any 
> backing bean methods that are executed b/c they are attached to some 
> attributes (ex. the 'rendered') attribute.
> This can be fixed by removing the facet from the JSF tree before calling the 
> superclass functionality and putting it back when you are ready to process 
> it. This means that a change is required to these methods in 
> org.apache.myfaces.component.html.ext.HtmlDataTable:
> public void processDecodes(FacesContext context)
> public void processValidators(FacesContext context)
> public void processUpdates(FacesContext context)
> For example, in processDecodes() the change would look like this:
>         // We must remove and then replace the facet so that 
>         // it is not processed by default facet handling code
>         //
>         Object facet = 
> getFacets().remove(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME);
>         super.processDecodes(context);
>         if ( facet != null ) 
> getFacets().put(HtmlTableRenderer.DETAIL_STAMP_FACET_NAME, facet);

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to