[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=16043591#comment-16043591 ]

Leonardo Uribe commented on MYFACES-4120:

I'm thinking on the side effect of not render resources inside <head> tag content. Suppose an stylesheet. If the stylesheed is not inside <head> tag after render all, the view will not be rendered properly. What I mean is javascript resources are preserved BUT stylesheet resources aren't if they are not bound to the DOM tree.

> 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
>            Assignee: Leonardo Uribe
> 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