アプリケーションでこの動作が発生する理由を知りたいだけです。
UI にプライムフェイスを使用し、ほとんどすべてのページがこのパターンに従っています。すべての CRUD 操作で AJAX を多用し、ダイアログを使用してユーザーに表示しました。
<ui:composition template="myTemplate.xhtml">
<ui:define name="content">
<ui:include
src="/pages/CreateDialog.xhtml" />
<ui:include
src="/pages/UpdateDialog.xhtml" />
<ui:include
src="/pages/DeleteDialog.xhtml" />
</ui:define>
</ui:composition>
私の唯一の懸念は、ダイアログで CRUD を実行した後、ユーザーが誤って F5 をクリックするか、ブラウザで更新した後、FF/Chrome および他のブラウザが常に言及されていることです。
To display this page, Firefox must send repeat action...
明らかに、これにより二重送信が発生します。以前は、古いアプリのこのシナリオで Post-Redirect-Get を使用していましたが、これは AJAX JSF の更新であるため、これを行うことはできません。
これの回避策は何ですか?これは正常ですか? ブラウザーの更新中に AJAX アクションが再度トリガーされるべきではないと考えました。
ヘルプ?
アップデート
このコードでダイアログを開いています
<p:commandButton value="Add"
onclick="createWidget.show();"
update=":CreateForm"
action="#{MyBean.add}"
/>
私の作成ダイアログはこれを使用します
<p:dialog header="Create">
<h:form id="CreateForm" prependId="false">
<p:commandButton value="Add" icon="ui-icon-plus"
actionListener="#{MyBean.add}"
update=":messageGrowl"
oncomplete="closeDialogIfSucess(xhr, status, args, createWidget 'createDialogId')"/>
</h:form>
</p:dialog>
私は実際にこのサイトのページをフォローしています...完全な WebApplication JSF EJB JPA JAAS