You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "marco fago (JIRA)" <de...@myfaces.apache.org> on 2012/09/21 13:45:07 UTC
[jira] [Created] (MYFACES-3613) NPE in composite component when
ActionListener is missing in the source
marco fago created MYFACES-3613:
-----------------------------------
Summary: 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
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
[jira] [Updated] (MYFACES-3613) NPE in composite component when
ActionListener is missing in the source
Posted by "Leonardo Uribe (JIRA)" <de...@myfaces.apache.org>.
[ https://issues.apache.org/jira/browse/MYFACES-3613?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Leonardo Uribe updated MYFACES-3613:
------------------------------------
Status: Patch Available (was: Open)
> 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
[jira] [Updated] (MYFACES-3613) NPE in composite component when
ActionListener is missing in the source
Posted by "Leonardo Uribe (JIRA)" <de...@myfaces.apache.org>.
[ https://issues.apache.org/jira/browse/MYFACES-3613?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Leonardo Uribe updated MYFACES-3613:
------------------------------------
Resolution: Fixed
Fix Version/s: 2.1.10
2.0.16
Assignee: Leonardo Uribe
Status: Resolved (was: Patch Available)
> 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
> Assignee: Leonardo Uribe
> Fix For: 2.0.16, 2.1.10
>
> 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
[jira] [Commented] (MYFACES-3613) NPE in composite component when
ActionListener is missing in the source
Posted by "Leonardo Uribe (JIRA)" <de...@myfaces.apache.org>.
[ https://issues.apache.org/jira/browse/MYFACES-3613?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13470519#comment-13470519 ]
Leonardo Uribe commented on MYFACES-3613:
-----------------------------------------
I have seen this problem many times. The recommended solution until this time is use "targets" syntax:
<cc:interface>
<cc:attribute name="action" targets="mybutton"/>
<cc:attribute name="value"/>
<cc:actionSource targets="mybutton"/>
</cc:interface>
<cc:implementation>
<h:commandButton id="mybutton" value="#{cc.attrs.value}" immediate="true">
<cc:insertChildren/>
</h:commandButton>
</cc:implementation>
This syntax is the one initially designed in JSF 2.0 spec.
But thinking more about it, it sounds reasonable to avoid the NullPointerException on ValueExpressionMethodExpression, which do the "bridge" between source #{cc.attr....} declaration and the ValueExpression chain, that finally ends in the final MethodExpression. In that way, h:commandButton will have a "dummy" invocation, but if you provide a method expression in the composite component attribute map, it will be redirected without any user intervention.
I can't imagine any side effects doing this change, and it will be friendly for users. Also, there are some cases where this behavior is wanted and "targets" syntax needs to be avoided (non NamingContainer composite component and inner components with generated ids). According to user reports, it will help with migration from facelets templates to composite components.
If no objections I'll commit the proposed solution soon.
> 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
[jira] [Commented] (MYFACES-3613) NPE in composite component when
ActionListener is missing in the source
Posted by "marco fago (JIRA)" <de...@myfaces.apache.org>.
[ 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