[ https://issues.apache.org/jira/browse/MYFACES-3613?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13470947#comment-13470947 ]
marco fago commented on MYFACES-3613: ------------------------------------- Sounds fair. I agree. > NPE in composite component when ActionListener is missing in the source > ----------------------------------------------------------------------- > > Key: MYFACES-3613 > URL: https://issues.apache.org/jira/browse/MYFACES-3613 > Project: MyFaces Core > Issue Type: Bug > Affects Versions: 2.1.8 > Environment: Java 1.7_05 Win32, Servlet3.0, Jetty8.1.5.v20120716 > Reporter: marco fago > Attachments: MYFACES-3613-1.patch > > > Consider the following component (simpleCommandButton.xhtml) > <ui:component xmlns="http://www.w3.org/1999/xhtml" > xmlns:ui="http://java.sun.com/jsf/facelets" > xmlns:h="http://java.sun.com/jsf/html" > xmlns:p="http://primefaces.org/ui" > xmlns:cc="http://java.sun.com/jsf/composite" > > > <cc:interface> > <cc:attribute name="action"/> > <cc:attribute name="actionListener"/> > <cc:attribute name="value"/> > </cc:interface> > <cc:implementation> > <h:commandButton value="#{cc.attrs.value}" > action="#{cc.attrs.action}" actionListener="#{cc.attrs.actionListener}" > immediate="true"> > <cc:insertChildren/> > </h:commandButton> > </cc:implementation> > </ui:component> > And in your page: > <myLib::simpleCommandButton value="Test" action="exit"/> > When clicking on the button a NPE occurs: > java.lang.NullPointerException > at > org.apache.myfaces.view.facelets.el.ValueExpressionMethodExpression.invoke(ValueExpressionMethodExpression.java:68) > at > org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96) > at > javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:83) > at javax.faces.event.ActionEvent.processListener(ActionEvent.java:51) > at > javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:418) > at javax.faces.component.UICommand.broadcast(UICommand.java:103) > at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1028) > at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:286) > at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1375) > at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:759) > at > org.springframework.faces.webflow.FlowLifecycle.invokePhase(FlowLifecycle.java:118) > at > org.springframework.faces.webflow.FlowLifecycle.execute(FlowLifecycle.java:70) > at > org.springframework.faces.webflow.JsfView.processUserEvent(JsfView.java:120) > at > org.springframework.webflow.engine.ViewState.handleEvent(ViewState.java:226) > at > org.springframework.webflow.engine.ViewState.resume(ViewState.java:196) > at org.springframework.webflow.engine.Flow.resume(Flow.java:545) > at > org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:258) > at > org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169) > at > org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183) > at > org.springframework.faces.webflow.JsfFlowHandlerAdapter.handle(JsfFlowHandlerAdapter.java:48) > at > org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) > at > org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) > at > org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) > at > org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:755) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) > at > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:643) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1331) > at > org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1302) > at > net.sf.ehcache.constructs.web.filter.GzipFilter.doFilter(GzipFilter.java:95) > at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1302) > at > org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java > probably because of the missing (null) attribute "actionListener" in the > source declaration. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira