title: ValueChangeListener on custom component leads to PropertyNotFoundException
body: <p>We have a custom JSF component that renders some buttons and a select box in a specific way. This is done by a class that extends <code>UIInput</code>. This custom component used in the <code>xhtml</code> templates like so:</p>
  
  <pre><code>&lt;xx:fooComponent
      value="#{fooBean.someProperty}" 
      valueChangeListener="#{fooBean.someMethodInBean}"
      someOtherProperties="true" /&gt;
  </code></pre>
  
  <p>Now since we changed from JBoss 4.2.2 running JSF 2.0 to JBoss 7.1.1 running with the built-in JSF libs, it complains about <code>someMethodInBean</code> not being a property. Of course it's not a property, it's a method. Who in the world would bind a property to a <code>valueChangeListener</code>?</p>
  
  <p>At first I thought, this had something to do with the method being in a superclass of the referenced bean, but that wasn't the case. Adding this particular method to <code>FooBean</code> did not make any difference.</p>
  
  <p>So my question is, what did they change so that this breaks now and how can I fix it in a migrating-friendly way?</p>
  
  <p><strong>edit</strong></p>
  
  <p>The component is declared as such in our <code>*.taglib.xml</code>:</p>
  
  <pre><code>&lt;!DOCTYPE facelet-taglib PUBLIC
    "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
    "http://java.sun.com/dtd/facelet-taglib_1_0.dtd"&gt;
  
  &lt;!-- ... --&gt;
  &lt;tag&gt;
      &lt;tag-name&gt;fooComponent&lt;/tag-name&gt;       
      &lt;component&gt;
          &lt;component-type&gt;myProject.FooComponent&lt;/component-type&gt;                     
      &lt;/component&gt;        
  &lt;/tag&gt;
  </code></pre>
  
  <p>... which leads to this declaration in <code>faces-config.xml</code>:</p>
  
  <pre><code>&lt;component&gt;
      &lt;component-type&gt;myProject.FooComponent&lt;/component-type&gt;
      &lt;component-class&gt;com.myproject.somemore.UIFooComponent&lt;/component-class&gt;
  &lt;/component&gt;
  </code></pre>
  
  <p>... which leads to the class <code>UIFooComponent extends UIInput</code>.</p>
  
  <p><strong>edit 2</strong></p>
  
  <p>Now the <code>taglib</code> xml looks like this:</p>
  
  <pre><code>&lt;facelet-taglib version="2.0"
              xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"&gt;
  
  &lt;tag&gt;
      &lt;tag-name&gt;fooComponent&lt;/tag-name&gt;       
      &lt;component&gt;
          &lt;component-type&gt;myProject.FooComponent&lt;/component-type&gt;                     
      &lt;/component&gt;
      &lt;attribute&gt;
          &lt;name&gt;valueChangeListener&lt;/name&gt;
          &lt;method-signature&gt;void valueChanged(javax.faces.event.ValueChangeEvent)&lt;/method-signature&gt;  
      &lt;/attribute&gt;        
  &lt;/tag&gt;
  &lt;/facelet-taglib&gt;
  </code></pre>
  
  <p>Still, he complains about <code>fooBean</code> not having the property <code>someMethodInBean</code>.</p>
  
  <p><em>edit 3</em></p>
  
  <p>The stack trace is:</p>
  
  <pre><code>Caused by: javax.el.ELException: /abc/abc.xhtml: The class 'com.myproject.managedbeans.foo.FooBean' does not have the property 'someMethodInBean'.
      at com.sun.faces.facelets.compiler.AttributeInstruction.write(AttributeInstruction.java:94)
      at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
      at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:302)
      at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
      at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
      at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
      at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
      at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
      at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
      at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
      at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
      at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
      at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:93)
      at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
      ... 21 more
  </code></pre>