ファイル添付ファイルを使用して、AEM アダプティブ Formsで重複した送信を防止する
この記事では、特に添付ファイルが含まれている場合に、処理中に「送信」ボタンを無効にすることで、AEM アダプティブFormsを複数回送信できないようにする方法について説明します。
説明 description
環境
Adobe Experience Manager(AEM)アダプティブForms(すべてのバージョン)
問題/症状
ユーザーは、「送信」ボタンを繰り返しクリックすることで、同じアダプティブフォームを複数回送信できます。特に、添付ファイルのアップロード中やフォームの処理中に送信できます。 これにより、送信が重複したり、意図しないデータ処理が行われたりする可能性があります。
原因
AEM Formsの基盤コンポーネントには、送信の重複を防ぐための、すぐに使用できる機能が用意されていません。 アダプティブ Formsのコアコンポーネントには、送信時に「送信」ボタンを無効にする組み込みロジックが含まれていますが、これは基盤コンポーネントでは使用できません。
解決策 resolution
問題を解決するには、次の手順に従います。
-
アダプティブフォームで使用するコンポーネントタイプを特定します。
- AEM Forms基盤コンポーネントを使用している場合は、手順2に進みます。
- アダプティブFormsにAEM コアコンポーネントを使用している場合は、手順4を参照してください。
-
基盤コンポーネントの場合(標準の重複送信防止なし):
- クライアントサイドのカスタマイズを実装して、最初のクリックまたは検証が通過した後に「送信」ボタンを無効にします。
- 「送信」ボタンを無効にするJavaScriptの例:
code language-none document.addEventListener('DOMContentLoaded', function() { var submitBtn = document.querySelector('button[ type="submit"] '); if (submitBtn) { submitBtn.addEventListener('click', function(e) { // Optionally, add validation check here submitBtn.disabled = true; // Optionally, show a loading spinner or message }); } });- 特にファイル添付ファイルでフォームを徹底的にテストし、処理が完了するまで「送信」ボタンが無効のままであることを確認します。
-
必要に応じて、バックエンドロジックを実装して、一意のIDまたはセッショントークンに基づいて重複する送信を検出および拒否します。
-
コアコンポーネントの場合(すぐに使用できる重複送信防止):
- まだ使用していない場合は、アダプティブForms用AEM コアコンポーネントにアップグレードするか、使用します。
- コアコンポーネントは、検証後および送信中に「送信」ボタンを自動的に無効にし、送信が重複するのを防ぎます。
-
フォームの処理中は、繰り返しクリックを防ぐために、必ずユーザーにフィードバック(読み込み用のスピナーやメッセージなど)を提供してください。
-
このソリューションを実装した後、ファイルのアップロードまたは処理中に「送信」を複数回クリックして、フォームをテストします。 ボタンは最初のクリック後に無効にし、1つの送信のみを処理する必要があります。
recommendation-more-help
experience-cloud-kcs-help-kbarticles