1

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パラメータを保持するか、呼び出しをインターセプトしてパラメータを追加し直す方法を知っている人はいますか?

4

2 に答える 2

1

?includeViewParams=trueアクション文字列の最後に置きます。

于 2013-03-26T20:25:03.110 に答える
0

これは<h:commandButton/>、フォームを投稿し、フォーム投稿の URL にパラメーターが含まれていないために発生します。パラメータを追加するには、同じページにリダイレクトするナビゲーション ルールを作成します。

<navigation from-action="#{advocateManager.saveCommitment}">
    <rule>
        <redirect view-id="/same-page.xhtml" />
    </rule>
</navigation>

リダイレクトを実行すると、ページ パラメータがエンコードされ、URL に追加されます。#{advocateManager.commitmentId}これには、リダイレクトが行われたときにデータが入力されている必要があることに注意してください。

于 2013-04-03T13:06:25.273 に答える