Хорошо. Протестировал и вот результат:
Для этого кода:
<h:form>
<h:panelGrid>
<h:panelGrid style="border: 1px solid #000;">
<h:outputText value="Panel1" />
<a4j:support event="onclick" action="#{mrBean.doSupport1}" />
<h:commandButton action="#{mrBean.doButton}">
</h:commandButton>
<h:panelGrid style="border: 1px solid #000;">
<h:outputText value="Panel2" />
<a4j:support event="onclick" action="#{mrBean.doSupport2}" />
</h:panelGrid>
</h:panelGrid>
</h:panelGrid>
</h:form>
Если я нажму на панели1, я получу:
doSupport1 runs.
Если я нажимаю на кнопку, я получаю:
doSupport1 runs.
doButton runs.
Если я нажму на панели2, я получу:
doSupport1 runs.
doSupport2 runs.
Таким образом, ответ на мой вопрос заключается в том, что все вспомогательные объекты перехватывают события, и порядок их вызова от отца к сыну.