title: Method not found exception on MethodExpression.invoke()
body: <p>I have a need to programmatically call/invoke a method in one of my backing beans.  I've looked at several examples, and from what I can see, this "should" work.</p>
  
  <p><strong>My code:</strong></p>
  
  <pre><code>UIData data = (UIData)component;
  fc = FacesContext.getCurrentInstance();
  elc = fc.getELContext();
  
  elFactory = fc.getApplication().getExpressionFactory();
  mexp =
      elFactory.createMethodExpression(elc, data.getValueExpression("value").getExpressionString(), Result.class, new Class[]{});
  Object methodResult = mexp.invoke(elc, null);
  </code></pre>
  
  <p>The "data.getValueExpresssion("value").getExpressionString() returns the string:</p>
  
  <pre><code>#{reports.customer}
  </code></pre>
  
  <p><strong>Info about the bean I'm calling</strong> (<em>don't know if these are relevant</em>):<br>
      Class's managed bean name is "report"<br>
      Class is in Session-scope<br>
      Class implements Serializable<br>
      The access modifier of the method I'm calling is<br>
      There are no parameters in the method signature  </p>
  
  <p><strong>Method I'm trying to invoke:</strong></p>
  
  <pre><code>public Result getCustomer() {
      Result result = null;
      try {
          ...perform database call
      } catch (Exception e) {
          log.error(e);
      }
      return result;
  }
  </code></pre>
  
  <p><strong>Stack-Trace Excerpt</strong></p>
  
  <pre><code>SEVERE: javax.el.MethodNotFoundException: Method not found: com.npp.beans.reports.SharebackReportsBean@1ebf0d3.customer()
  javax.faces.el.EvaluationException: javax.el.MethodNotFoundException: Method not found: com.npp.beans.reports.SharebackReportsBean@1ebf0d3.customer()
      at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98)
      at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
      at javax.faces.component.UICommand.broadcast(UICommand.java:311)
      at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)
      at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
  ...
  Caused by: javax.el.MethodNotFoundException: Method not found: com.npp.beans.reports.SharebackReportsBean@1ebf0d3.customer()
      at com.sun.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:155)
      at com.sun.el.parser.AstValue.invoke(AstValue.java:231)
      at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
      at com.npp.business.TableToExcelManager.initExcelWorker(TableToExcelManager.java:247)
      at com.npp.beans.reports.SharebackReportsBean.exportToExcel(SharebackReportsBean.java:439)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
      at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
      at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)
      at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84)
      ... 26 more
  Mar 23, 2011 11:29:34 AM com.sun.faces.lifecycle.InvokeApplicationPhase execute
  WARNING: #{reports.exportToExcel}: javax.el.MethodNotFoundException: Method not found: com.npp.beans.reports.SharebackReportsBean@1ebf0d3.customer()
  javax.faces.FacesException: #{reports.exportToExcel}: javax.el.MethodNotFoundException: Method not found: com.npp.beans.reports.SharebackReportsBean@1ebf0d3.customer()
      at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:114)
      at javax.faces.component.UICommand.broadcast(UICommand.java:311)
      at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)
      at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  </code></pre>
  
  <p>Any help on this is greatly appreciated!</p>