ID を URL パラメーターとして受け取り、それを使用してオブジェクトを取得し、それに関するデータを表示するページがあります。このページには、ファイル アップロード コンポーネントを含むモーダルがあるため、ajax を使用して保存を処理することはできません。代わりに、次のようにします。
<rich:modalPanel domElementAttachment="parent" id="profilePanel" styleClass="popUp" resizeable="false" moveable="false" autosized="true" zindex="200" top="-10">
<a4j:form enctype="multipart/form-data" id="profilePanelFormId">
<q:box title="Edit Advocacy Profile" width="width6x" wantFocus="true">
<s:div id="profilePanelForm">
<rich:messages rendered="#{messagesUtil.errorsExist}"/>
<a4j:include viewId="/panel/advocacy/advocateProfileEdit.xhtml"/>
</s:div>
<h:commandButton id="cancel" immediate="true" value="Cancel" action="#{advocateManager.cancelEditCommitment}" styleClass="button cancel" tabindex="100"/>
<h:commandButton id="save" value="Save" action="#{advocateManager.saveCommitment}" styleClass="submit" tabindex="101"/>
</q:box>
</a4j:form>
</rich:modalPanel>
次のように、pages.xml にパラメーターを入力します。
<page view-id="/advocacy/advocateCommitmentView.xhtml" login-required="true">
<param name="confirmationCode" value="#{advocateManager.commitmentId}"/>
</page>
ここまでは順調ですね。私たちが直面している問題は、ユーザーが保存またはキャンセルをクリックすると、必要な id パラメータなしで URL が書き換えられることです。ユーザーがページを更新すると、このキーがないため、エラーがスローされます。ajaxを使用せずにsaveメソッドを呼び出してもurlパラメータを保持するか、呼び出しをインターセプトしてパラメータを追加し直す方法を知っている人はいますか?