myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anton Zukovskij (JIRA)" <>
Subject [jira] [Created] (MYFACES-3931) RelocatableResourceHandler tag + inner f:facet = NullPointerException
Date Wed, 08 Oct 2014 12:28:33 GMT
Anton Zukovskij created MYFACES-3931:

             Summary: RelocatableResourceHandler tag + inner f:facet = NullPointerException
                 Key: MYFACES-3931
             Project: MyFaces Core
          Issue Type: Bug
          Components: General
    Affects Versions: 2.2.5, 2.1.12
         Environment: Primefaces compatibility issue (discovered with primfaces component,
but reproducible on standalone myfaces app)
            Reporter: Anton Zukovskij

When primefaces h:head renderer is used with inner f:facet (first\middle\last) like follows:
    <f:facet name="first">
	 <h:outputScript name="jquery.js"/>
Application crashes with NPE during some AJAX requests on  ComponentTagHandlerDelegate:337
ComponentSupport.removeFacet(ctx, parent, c, facetName);
*This is caused by:*
# ComponentTagHandlerDelegate:190 - Resolves facet name from non-relocated parent (_HtmlHead)
# ComponentTagHandlerDelegate:327 - Changes parent to re-located element UIPanel(j_idhead__f_first),
resolved with HtmlOutputScriptHandler
#ComponentTagHandlerDelegate:337 - Uses re-located parent with non-relocated parents facet
name, facet isn't found, NPE is thrown.

Refresh facetName when parent is changed, see diff:
--- a/myfaces-2.1.12/myfaces-impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/
Wed Oct 08 15:18:20 2014 +0300
+++ b/myfaces-2.1.12/myfaces-impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/
Wed Oct 08 15:18:33 2014 +0300
@@ -325,6 +325,7 @@
                         // Replace parent with the relocated parent.
                         parent = c.getParent();
+                        facetName = this.getFacetName(ctx, parent); // refresh facet name
according to new parent
                 if (facetName == null)

*Note:* Exception handling for such cases can be improved, as application crashes during render
phase no response is rendered and MyFaces ExceptionHandler is unable to add exception into
AJAX response - this way no exception is logged or returned, empty screen is rendered without
any errors.

This message was sent by Atlassian JIRA

View raw message