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

Volodymyr Siedlecki commented on MYFACES-4421:
----------------------------------------------

I see MYFACES-4285 applied to 2.2. I will mark this as closed.

> NullPointerException in TagAttributeImpl
> ----------------------------------------
>
>                 Key: MYFACES-4421
>                 URL: https://issues.apache.org/jira/browse/MYFACES-4421
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 2.2.13
>         Environment: Environment ist not of interest for this issue
>            Reporter: Ulrich Lohrmann
>            Priority: Major
>             Fix For: 2.2.15
>
>
> Beginning with MyFaces version 2.2.13 I get a NullPointerException in the 
> TagAttributeImpl class upon rendering a JSF page. This error did not occur 
> before 2.2.13.
> {code:java}
> java.lang.NullPointerException
>     
> org.apache.myfaces.view.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:569)
>     
> org.apache.myfaces.view.facelets.tag.jsf.ComponentRule$ValueExpressionMetadata.applyMetadata(ComponentRule.java:73)
>     
> org.apache.myfaces.view.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:45)
>     
> javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:63)
>     
> javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:90)
>     
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:291)
>     
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:50)
>     
> org.apache.myfaces.view.facelets.tag.jsf.core.FacetHandler.apply(FacetHandler.java:75)
>     
> org.apache.myfaces.view.facelets.tag.composite.CompositeComponentResourceTagHandler.applyNextHandlerIfNotApplied(CompositeComponentResourceTagHandler.java:299)
>     
> org.apache.myfaces.view.facelets.tag.composite.CompositeComponentResourceTagHandler.applyNextHandler(CompositeComponentResourceTagHandler.java:235)
>     
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:374)
>     
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:50)
>     
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46)
>     
> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:55)
>     
> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:374)
>     
> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:50)
>     
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46)
>     
> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:66)
>     
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46)
>     
> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46)
>     
> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
>     
> org.apache.myfaces.view.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:189)
>     
> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:477)
>     
> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:83)
>     org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:267)
>     javax.faces.webapp.FacesServlet.service(FacesServlet.java:200)
>     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
> {code}
> I have created a show case on Github: 
> [https://github.com/UlrichLohrmann/MyFacesError.git] that can be used to 
> reproduce the error.
> I have a composite component ConfirmDialog.xhtml that hides details of a 
> Primefaces dialog. In addition that composite component defines two facets 
> "buttonOne" and "buttonTwo".
> I now use this composite component in the JSF page index.html.
> Here I provide content for the two facets.
> {code:java}
> <m:ConfirmDialog id="confirmDialog_Empfangsberechtigter_Loeschen" 
> widgetVar="confirmDialog_Empfangsberechtigter_Loeschen_widget">
>   <f:facet name="buttonOne">
>     <p:commandButton value="Yes" 
> oncomplete="PF('#{cc.attrs.widgetVar}').hide();" /> 
>   </f:facet>
>   .
>   <f:facet name="buttonTwo">
>     <p:commandButton value="No"
>       styleClass="ui-button-ghost"
>       onclick="PF('#{cc.attrs.widgetVar}').hide();" ajax="true" />
>   </f:facet>{code}
> As I don't want to use the widget var of the composite component in the 
> f:facet, I use "#\{cc.attrs.widgetVar}" in the facet to address the name of 
> the widget var INSIDE the composite component.
> That works with MyFaces 2.2.12 but not more with 2.2.13 and higher.
> If I replace the "cc.attrs.widgetVar" with the name of the widgetVar 
> (confirmDialog_Empfangsberechtigter_Loeschen_widget) everything works fine.
> So it looks to me that Myfaces 2.2.12 and earlier evaluates the 
> "cc.attrs.widgetVar" expression AFTER the facet was rendered in the composite 
> component (so from the inside view of the composite component) whereas from 
> 2.2.13 on it seems that the expression is renderes BEFORE the facet is 
> rendered inside the composite component.
> The sample from github can be executed in a tomcat and the error occurs when 
> accessing index.xhtml



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to