I've the below tagfile:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
>
...
<h:inputText ...>
<a4j:ajax listener="#{ajaxListener}" />
</h:inputText>
...
</ui:composition>
whose ajaxListener
attribute is configured as:
<attribute>
<name>ajaxListener</name>
<required>false</required>
<type>javax.el.MethodExpression</type>
<method-signature>void listner(javax.faces.event.AjaxBehaviorEvent)</method-signature>
</attribute>
When the tag is used as:
<wish:inputText id="nameEn"
value="#customerAddBacking.customerBean.nameEn}"
label="#{lbs.CUSTOMER_NAME_EN}2"
ajaxEnabled="true"
ajaxListener="#{customerAddBacking.enNameChangeListener}" />
the following exception is thrown:
javax.el.PropertyNotFoundException: The class 'com.wish.nags.web.view.client.setting.customer.CustomerAddBacking' does not have the property 'enNameChangeListener'.
How is this caused and how can I solve it?
It works if I use a composite component with <cc:attribute method-signature>
, however I can't use a composite component to avoid the problem as described here: a composite component inside panelgrid is not 'expanded'