ファイル添付ファイルを使用して、AEM アダプティブ Formsで重複した送信を防止する

この記事では、特に添付ファイルが含まれている場合に、処理中に「送信」ボタンを無効にすることで、AEM アダプティブFormsを複数回送信できないようにする方法について説明します。

説明 description

環境

Adobe Experience Manager(AEM)アダプティブForms(すべてのバージョン)

問題/症状

ユーザーは、「送信」ボタンを繰り返しクリックすることで、同じアダプティブフォームを複数回送信できます。特に、添付ファイルのアップロード中やフォームの処理中に送信できます。 これにより、送信が重複したり、意図しないデータ処理が行われたりする可能性があります。

原因

AEM Formsの基盤コンポーネントには、送信の重複を防ぐための、すぐに使用できる機能が用意されていません。 アダプティブ Formsのコアコンポーネントには、送信時に「送信」ボタンを無効にする組み込みロジックが含まれていますが、これは基盤コンポーネントでは使用できません。

解決策 resolution

問題を解決するには、次の手順に従います。

  1. アダプティブフォームで使用するコンポーネントタイプを特定します。

    • AEM Forms基盤コンポーネントを使用している場合は、手順2に進みます。
    • アダプティブFormsにAEM コアコンポーネントを使用している場合は、手順4を参照してください。
  2. 基盤コンポーネントの場合(標準の重複送信防止なし):

    • クライアントサイドのカスタマイズを実装して、最初のクリックまたは検証が通過した後に「送信」ボタンを無効にします。
    • 「送信」ボタンを無効にする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
            });
        }
    });
    
    • 特にファイル添付ファイルでフォームを徹底的にテストし、処理が完了するまで「送信」ボタンが無効のままであることを確認します。
  3. 必要に応じて、バックエンドロジックを実装して、一意のIDまたはセッショントークンに基づいて重複する送信を検出および拒否します。

  4. コアコンポーネントの場合(すぐに使用できる重複送信防止):

    • まだ使用していない場合は、アダプティブForms用AEM コアコンポーネントにアップグレードするか、使用します。
    • コアコンポーネントは、検証後および送信中に「送信」ボタンを自動的に無効にし、送信が重複するのを防ぎます。
  5. フォームの処理中は、繰り返しクリックを防ぐために、必ずユーザーにフィードバック(読み込み用のスピナーやメッセージなど)を提供してください。

  6. このソリューションを実装した後、ファイルのアップロードまたは処理中に「送信」を複数回クリックして、フォームをテストします。 ボタンは最初のクリック後に無効にし、1つの送信のみを処理する必要があります。

recommendation-more-help
experience-cloud-kcs-help-kbarticles