First of all: this is a bug report related to
The actionListener of an a4j:ajax-enhanced component is not invoked on the server side. In a nutshell the problem is due to the request parameter "javax.faces.source" not matching the id of the component for which the AjaxBehaviorEvent is bound.
The problem occurs when you assign hierarchical component ids in your xhtml.
Here is a condensed snippet xhtml illustrating the problem:
As you can see, the id of the selectBooleanCheckbox begins with the id of the treeNode.
The problem is within the function "searchForComponentRootOrReturn" which in this special case of id-hierarchy evaluates to the wrong element. The correct element to be returned here would be the "sourceElement" (selectBooleanCheckbox with the id "treeNodeSelectBox" in the example above), but the code evaluates to a "parentElement" (treeNode in the example above) due to its id "treeNode" being a prefix of the component which fired the event.
It took me a whole day to figure that one out, since there is no useful output neither in a4j:log nor in server side logging in a case where the parameter "javax.faces.source" does not match the component id. In fact the AJAX request is executed just fine, only the event is never queued...
(See Mojarra HtmlBasicRenderer => decodeBehaviors and its check method isBehaviorSource)