---
title: "フォームのアクション送信エラーの処理"
slug: "handle-submit-action-errors-for-forms"
abstract: "フォーム提出アクションが失敗した際のエラーの処理方法。"
---
# フォームのアクション送信エラーの処理

フォームの送信アクションが実行されない場合、送信アクションに関連するデフォルトのエラーメッセージがフォームに表示され、ユーザーはフォームを送信できなくなります。送信アクションに関連するデフォルトのエラーメッセージは、ご自身のニーズに合わせて変更できます。

また、送信アクションに関連付けられたデフォルトのエラーメッセージを非表示にすることもできます。これは、エラーメッセージの表示やフォームの送信を妨げたくない本番環境では重要かもしれません。例えば、**トリガー目標** の提出アクションは、ユーザー権限の不十分でxDB Trackerが利用できない場合に失敗することがありますが、この場合はユーザーがフォームの提出を進めるようにしたいのです。

> !注デフォルトのエラーメッセージはログファイル(App\_Data\\logs\\log.<date>.<time>.txt)に記録されます。送信アクションのエラーメッセージフィールドが空の場合でも、エラーメッセージはログファイルに記録されます(例えば、ログエントリはthe goal <goal item ID> cannot be registered because the Tracker is disabled or not initialized.と書かれることがあります)。さらに、一部の送信アクションはランタイムの例外をログに記録し、スタックトレースも含まれます。

## デフォルトのエラーメッセージを「アクションの送信エラー」に変更します

この手順では、**Save Data**アクションを例にして、送信アクションのデフォルトエラーメッセージを変更する方法を示します。フォームを作成すると、「 [Save Data Submit](https://doc.sitecore.com/xp/en/users/104/sitecore-experience-platform/working-with-submit-actions.html) action」がフォーム [データをFormsデータベース](https://doc.sitecore.com/xp/en/developers/104/platform-administration-and-architecture/forms-database.html)に保存します。

デフォルトのエラーメッセージを変更するには:

1.  コンテンツエディターで /sitecore/System/Settings/Forms/Submit Actionsへ行ってください。
    
2.  コンテンツツリーで **「データの保存** 」をクリックし、**設定** セクションの **エラーメッセージ** 欄で新しいメッセージを入力し、変更を保存してください。
    
    ![Error Message field for the Save Data submit action.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/103/sitecore-experience-manager/images/FORMS-save-data-error-message.PNG)
    
    > !重要デフォルトのエラーメッセージを隠し、フォームを送信できるようにするには、エラーメッセージフィールドを空欄のままにしてください。
    

## 条件付きフォームの作成 送信エラーメッセージ

より具体的なエラーメッセージが欲しい場合は、カスタム送信アクションを作成して条件付きエラーメッセージを設定し、条件が満たされない場合はデフォルトのエラーメッセージを表示することができます。

条件付きエラーメッセージを作成するには:

1.  フォームの送信エラーメッセージをセーブアクションからプログラム的に変更するには、SubmitActionBaseクラスのExecuteActionメソッドを上書きするカスタムセーブデータアクションを作成します。ここでは、あらかじめ定義された送信エラーメッセージを上書きするカスタマイズされたエラーメッセージを割り当てることができます。
    
    formSubmitContext.Errors.Add(new FormActionError
     {
     ErrorMessage = \_errorMessage
     });
    
2.  カスタムSave Data submit actionクラス内で、異なる条件に基づいてエラーメッセージの値を管理しなければなりません。例えば:
    
    class CustomSaveData:SaveData
     {
     private string \_errorMessage;
     public CustomSaveData(ISubmitActionData submitActionData) : base(submitActionData)
     {
     }
    
     protected override bool SavePostedData(Guid formId, Guid sessionId, IList;IViewModel postedFields)
     {
     if (formId == Guid.Empty) //Condition 1
     {
     \_errorMessage = "Invalid form id!";
     return false;
     }
    
     if (sessionId == Guid.Empty)// Condition 2
     {
     \_errorMessage = "Invalid session!";
     return false;
     }
    
     try
     {
     var formEntry = new FormEntry
     {
     Created = DateTime.UtcNow,
     FormItemId = formId,
     FormEntryId = sessionId,
     Fields = new ListFieldData()
     };
    
     if (postedFields != null)
     {
     foreach (var postedField in postedFields)
     {
     AddFieldData(postedField, formEntry);
     }
     }
     else
     {
     \_errorMessage = "No data to save!"; //Condition 3
     return false;
     }
    
     FormDataProvider.CreateEntry(formEntry);
    
     return true;
     }
     catch (Exception exception)
     {
     Logger.LogError(exception.Message, exception, this);
     \_errorMessage = exception.Message; //Condition 4
     return false;
     }
     }
    
     public override void ExecuteAction(FormSubmitContext formSubmitContext, string parameters)
     {
     Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext));
    
     string data;
     if (TryParse(parameters, out data))
     {
     try
     {
     if (Execute(data, formSubmitContext))
     {
     return;
     }
     }
     catch (ArgumentNullException)
     {
     }
     }
    
     formSubmitContext.Errors.Add(new FormActionError
     {
     ErrorMessage = \_errorMessage
     });
     }
     }
    
3.  デフォルトのセーブデータアクションを置き換えるには、/sitecore/System/Settings/Forms/Submit Actionsに移動して **「セーブデータ** 」をクリックし、**設定** セクションの **モデルタイプ** フィールドで現在の値をカスタムSave Data actionクラス名に置き換えてください。
    
    ![Model Type field for the Save Data submit action.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/103/sitecore-experience-manager/images/FORMS-save-data-mode-type.PNG)
    
    [また、新しい提出アクションアイテムを作成する](https://doc.sitecore.com/xp/ja/developers/103/sitecore-experience-manager/walkthrough--creating-a-custom-submit-action.html "Walkthrough: Creating a custom submit action")こともできます。