[jira] [Commented] (MYFACES-4120) ResourceHandler#markResourceRendered() should be retained during ajax rebuild

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

[jira] [Commented] (MYFACES-4120) ResourceHandler#markResourceRendered() should be retained during ajax rebuild

My Faces - Dev mailing list

    [ https://issues.apache.org/jira/browse/MYFACES-4120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16042163#comment-16042163 ]

Leonardo Uribe commented on MYFACES-4120:

I checked the code and how it is handled this case on the javascript side and the whole head tag is replaced, so anyway if we keep track of the resources added in a facesContext map, it will be pointless, because the partial response from the server will be the same. I'll close this issue as not a problem. Please reopen it again if you thing there is something I'm missing in the resolution. Thanks Bauke for the report.

> ResourceHandler#markResourceRendered() should be retained during ajax rebuild
> -----------------------------------------------------------------------------
>                 Key: MYFACES-4120
>                 URL: https://issues.apache.org/jira/browse/MYFACES-4120
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions: 2.3.0
>         Environment: TomEE 7.0.3 with MyFaces 2.3.0-SNAPSHOT
>            Reporter: Bauke Scholtz
> While running OmniFaces IT suite on today's MyFaces 2.3.0-SNAPSHOT, I noticed a bug in ResourceHandler#isResourceRendered() during an ajax navigation back to the same view (more specifically, when FacesContext#setViewRoot() is invoked with a new UIViewRoot of same viewId during an ajax postback).
> During restore view phase, all already-rendered resources are correctly marked via markResourceRendered(). However, this is in turn stored as a transient UIViewRoot attribute. As a consequence, when the UIViewRoot gets changed during the very same ajax request, they are all lost, causing isResourceRendered() to incorrectly return false.
> Basically, the markResourceRendered() of the previous view should be remembered for the next view when PartialViewContext#isAjaxRequest() returns true and isRenderAll() returns false.
> In MyFaces 2.2 (and possibly earlier) the behavior of markResourceRendered() and isResourceRendered() was internally correctly implemented via org.apache.myfaces.RENDERED_SCRIPT_RESOURCES_SET context attribute.

This message was sent by Atlassian JIRA