I'm stumped. I've got a mix of h:commandLinks and a4j:commandLinks on a page. When I execute an h:commandLink postback which fires an action method on the server, then browser back to the previous page (IE or Firefox), then execute an a4j:commandLink, the a4j:commandLink's action does fire on the server but the previous h:commandLink action also executes its action. Here's a simple example:
<h:form>
<h:commandLink action="#{testBean.doPostback}" value="do postback"/>
<a4j:commandLink action="#{testBean.doAjax}" value="do ajax" ajaxSingle="true" />
</h:form>
So, click "do postback" fires testBean.doPostback on the server, then click the browser back button, then click "do ajax", the result is that both testBean.doAjax and testBean.doPostback fire on the server. I must be missing something very fundamental. Why is testBean.doPostback firing?