0

I am trying implement a simple composite component with ajax event based on information I found on Internet, but I am always getting the error javax.el.PropertyNotFoundException

I've searched for solution and I cannot figure out what I am doing wrong.

Enviroment: Jboss eap 5.1, Mojarra 2.1.6, primefaces 3.4.2 I cannot switch to higher version of jboss since I am working on existed application and I am doing only some enhancements.

Here are snapshots of the code.

timeselect.xhtml:

 <composite:implementation>     
    <h:outputLabel for="ddTime" value="Time:" style="font-weight:bold"/>                        
        <p:selectOneMenu id="ddTime" value="cc.attrs.value" style="width:125px" immediate="false">
            <f:selectItem itemLabel="Select One" itemValue="" />
            <f:selectItem itemLabel="Label1" itemValue="ID1" />
             <f:selectItem itemLabel="Label2" itemValue="ID2" />
            <f:selectItem itemLabel="Label3" itemValue="ID3" />
            <p:ajax event="change" listener="#{cc.timelistener}" process="@this" required="true"/>
    </p:selectOneMenu>  
  </composite:implementation>

Component Bean:

@FacesComponent("timeselect")
public class TimeSelectCC extends UINamingContainer {

    public TimeSelectCC() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public String getFamily() {
        return "javax.faces.NamingContainer"; 
    }

    public void timelistener(AjaxBehaviorEvent event) {
        FacesContext context = FacesContext.getCurrentInstance();
        MethodExpression ajaxEventListener = (MethodExpression) getAttributes().get("timelistener");
        if(ajaxEventListener != null){
            ajaxEventListener.invoke(context.getELContext(), new Object[] { event });
        }
    }
}

Call from the xhtml page:

<myc:timeselect value="#{pieChartBean.selectedTime}"  timelistener="#{pieChartBean.timeValChange}" /> 

//here - one more label & one more select

</h:panelGrid>
</ui:define>

Method in Managed bean called:

@ManagedBean(name = "pieChartBean")
@ViewScoped

..... 

public void timeValChange(AjaxBehaviorEvent  event){

    //code here

}

Error:(updated with full stack trace)

SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-127.0.0.1-8080-2) Error Rendering View[/pages/tStats.xhtml]: javax.el.PropertyNotFoundException: The class 'com.mbean.PieChartManagedBean' does not have the property 'timeValChange'.
    at javax.el.BeanELResolver.getBeanProperty(BeanELResolver.java:661) [:1.0.0.Final]
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:290) [:1.0.0.Final]
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) [:2.1.6-SNAPSHOT]
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) [:2.1.6-SNAPSHOT]
    at org.apache.el.parser.AstValue.getValue(AstValue.java:134) [:6.1.0.Final]
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:187) [:6.1.0.Final]
    at com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:217) [:2.1.6-SNAPSHOT]
    at com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:157) [:2.1.6-SNAPSHOT]
    at com.sun.faces.facelets.compiler.CommentInstruction.write(CommentInstruction.java:77) [:2.1.6-SNAPSHOT]
    at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82) [:2.1.6-SNAPSHOT]
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:302) [:2.1.6-SNAPSHOT]
    at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185) [:2.1.6-SNAPSHOT]
    at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757) [:2.1.6-SNAPSHOT]
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [:2.1.6-SNAPSHOT]
    at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:56) [:]
    at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:44) [:]
    at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51) [:]
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [:2.1.6-SNAPSHOT]
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) [:2.1.6-SNAPSHOT]
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) [:2.1.6-SNAPSHOT]
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [:2.1.6-SNAPSHOT]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [:2.1.6-SNAPSHOT]
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [:2.1.6-SNAPSHOT]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [:2.1.6-SNAPSHOT]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.1.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final]
    at java.lang.Thread.run(Thread.java:662) [:1.6.0_38]

2016-04-14 00:59:02,115 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/StatsAdmin].[Faces Servlet]] (http-127.0.0.1-8080-2) Servlet.service() for servlet Faces Servlet threw exception: javax.el.PropertyNotFoundException: The class 'com.mbean.PieChartManagedBean' does not have the property 'timeValChange'.
    at javax.el.BeanELResolver.getBeanProperty(BeanELResolver.java:661) [:1.0.0.Final]
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:290) [:1.0.0.Final]
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) [:2.1.6-SNAPSHOT]
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) [:2.1.6-SNAPSHOT]
    at org.apache.el.parser.AstValue.getValue(AstValue.java:134) [:6.1.0.Final]
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:187) [:6.1.0.Final]
    at com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:217) [:2.1.6-SNAPSHOT]
    at com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:157) [:2.1.6-SNAPSHOT]
    at com.sun.faces.facelets.compiler.CommentInstruction.write(CommentInstruction.java:77) [:2.1.6-SNAPSHOT]
    at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82) [:2.1.6-SNAPSHOT]
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:302) [:2.1.6-SNAPSHOT]
    at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185) [:2.1.6-SNAPSHOT]
    at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757) [:2.1.6-SNAPSHOT]
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [:2.1.6-SNAPSHOT]
    at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:56) [:]
    at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:44) [:]
    at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51) [:]
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [:2.1.6-SNAPSHOT]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [:2.1.6-SNAPSHOT]
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) [:2.1.6-SNAPSHOT]
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) [:2.1.6-SNAPSHOT]
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [:2.1.6-SNAPSHOT]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [:2.1.6-SNAPSHOT]
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [:2.1.6-SNAPSHOT]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [:2.1.6-SNAPSHOT]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.1.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final]
    at java.lang.Thread.run(Thread.java:662) [:1.6.0_38]
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
Anna G
  • 1
  • 2
  • Problem suggests you didn't declare `xmlns:myc` in the XHTML page containing `` or it has a wrong URI. I don't think the backing component contributes anything to the problem. Try to narrow down the problem into a real MCVE. – BalusC Apr 12 '16 at 07:10
  • shouldnt it be `listener="#{cc.attrs.timelistener}"` instead of `listener="#{cc.timelistener}"`? – Raphael Roth Apr 12 '16 at 10:30
  • @BalusC, My chart.xhtml that contains has myc namespace defined as below xmlns:myc="http://java.sun.com/jsf/composite/mycomponents" The timeselect.xhtml is in the folder webapp/resources/mycomponents (in Eclipse ) and after the built in the root directory of the war as resources/mycomponents. Is this correct location for the folder for the composite components? I tried to move it to WEB-INF and classes but got "but no tag was defined for name: timeselect " error. – Anna G Apr 12 '16 at 23:41
  • @Raphael Roth, for cc.attrs.timelistener the same error produced .... based what I saw on Internet it seems to me it should be cc.timelistener in this case. – Anna G Apr 12 '16 at 23:42
  • Please post entire stack trace (at least, all lines up to with `FacesServlet.service`) to eliminate ambiguity as to possible causes. – BalusC Apr 13 '16 at 07:17
  • @BalusC , I've posted the stack trace – Anna G Apr 14 '16 at 05:19
  • Ha, cause is clear: `at com.sun.faces.facelets.compiler.CommentInstruction.write`. – BalusC Apr 14 '16 at 07:34
  • @BalusC , Yes you are right, as I removed comments above my component, the problem disappeared . But I got a new problem with "wrong number of arguments". I saw a few similar errors on stackoverflow, the solution seems to be very similar to the code I have. Is my listener method signature wrong? or method on the bean? will it invoke the method of another bean (pieChartBean in my sample)? – Anna G Apr 14 '16 at 21:48

0 Answers0