以下のコードは、失敗する可能性のある最も単純なものに単純化されています。基本的に誰かがアクションの確認を要求したとき、私は彼らにログインを強制してから、アクションを確認できるようにしています。これはすべてajaxで行われます。最初のフォームの送信は正しく行われますが、2 番目のフォームは目的の ActionListener の実行に失敗します。ただし、2 番目のフォームはサーバーに投稿しています。
<h:panelGroup id="confirmPanelWrapper">
<h:panelGroup id="loginPanelInner" rendered="#{(!login.authenticated)}">
<a4j:form id="loginForm">
<h:outputText value="Enter your proctor login."/><br/>
<br/>
<h:outputText value="User Name *"/><br/>
<h:inputText size="30" id="username" value="#{login.username}"/><br/>
<br/>
<h:outputText value="Password *"/><br/>
<h:inputSecret size="30" id="password" value="#{login.password}"/><br/>
<br/>
<a4j:commandButton value="Submit" action="#{login.authenticateProctor}" reRender="confirmPanelWrapper"/>
</a4j:form>
</h:panelGroup>
<h:panelGroup id="confirmPanel" rendered="#{(login.authenticated)}">
<a4j:form id="confirmForm">
<a4j:commandButton
value="Yes"
id="confirmTest"
actionListener="#{beanName.confirmTestAssociation}"
reRender="confirmPanelWrapper"
style="padding-right:10px;"/>
<a4j:commandButton
value="No"
id="denyTest"
reRender="confirmPanelWrapper"
actionListener="#{beanName.selectionNotConfirmed}"/>
</a4j:form>
</h:panelGroup>
</h:panelGroup>