アダプティブ Forms コアコンポーネントのカスタム関数
この記事では、次のような最新の機能を備えた、最新のアダプティブフォームのコアコンポーネントを使用してカスタム関数を作成する方法について説明します。
- カスタム関数のキャッシュ機能
- グローバル スコープ オブジェクトとフィールド オブジェクトは、カスタム関数をサポートしています。
- レット関数や矢印関数などの最新のJavaScript機能のサポート(ES10 のサポート)
カスタム関数の最新機能を使用するには、AEM Forms コアコンポーネント環境で 最新のフォームバージョンを設定してください。
はじめに
AEM Forms 6.5 には、ルールエディターを使用して複雑なビジネスルールを定義できるJavaScript関数が含まれています。 AEM Formsは様々な標準のカスタム関数を提供していますが、多くの場合、複数のフォームで使用するために独自のカスタム関数を定義する必要があります。 これらのカスタム関数は、入力されたデータを特定の要件に合わせて操作および処理できるようにすることで、フォームの機能を強化します。 さらに、定義済みの条件に基づいてフォームの動作を動的に変更できます。
カスタム関数の使用 uses-of-custom-function
アダプティブなForms コアコンポーネントでカスタム関数を使用する場合の利点は次のとおりです。
- データの管理:カスタム関数は、フォームフィールドに入力されたデータを管理および処理します。
- データの処理:カスタム関数は、フォームフィールドに入力されたデータの処理に役立ちます。
- データの検証:カスタム関数を使用すると、フォームの入力に対してカスタムチェックを実行し、指定したエラーメッセージを提供できます。
- 動的な動作:カスタム関数を使用すると、特定の条件に基づいてフォームの動的な動作を制御できます。 例えば、フィールドの表示/非表示、フィールド値の変更、フォームロジックの調整を動的に行うことができます。
- 統合:カスタム関数を使用して外部の API やサービスと統合できます。 外部ソースからのデータの取得、外部 Rest エンドポイントへのデータの送信、外部イベントに基づくカスタムアクションの実行に役立ちます。
カスタム関数は基本的に、JavaScript ファイルに追加されるクライアントライブラリです。 カスタム関数を作成すると、ルールエディターで使用できるようになり、アダプティブフォーム内のユーザーが選択できるようになります。 カスタム関数は、ルールエディターのJavaScript アノテーションによって識別されます。
カスタム関数でサポートされるJavaScript注釈 js-annotations
JavaScript注釈は、JavaScript コード のメタデータを提供します。 /**
や @
など、特定の記号で始まるコメントが含まれます。 注釈は、コード内の関数、変数、その他の要素に関する重要な情報を提供します。 アダプティブフォームは、カスタム関数に対して次のJavaScript注釈をサポートしています。
名前
Name は、アダプティブフォームのルールエディターでカスタム関数を識別するために使用します。 カスタム関数の名前には、次の構文を使用します。
@name [functionName] <Function Name>
@function [functionName] <Function Name>
@func [functionName] <Function Name>
[functionName]
は、関数の名前です。 スペースは使用できません。<Function Name>
は、アダプティブFormsのルールエディターにある関数の表示名です。関数名が関数自体の名前と同じ場合は、構文から
[functionName]
を省略できます。パラメーター
パラメーター は、カスタム関数で使用される引数のリストです。 1 つの関数は、複数のパラメーターをサポートできます。 次の構文を使用して、カスタム関数でパラメーターを定義します。
-
@param {type} name <Parameter Description>
-
@argument
{type} name <Parameter Description>
-
@arg
{type}
name <Parameter Description>
{type}
は、パラメータータイプを表します。 使用できるパラメーターのタイプは次のとおりです。- string:単一の文字列値を表します。
- 数値:1 つの数値を表します。
- ブール値:単一のブール値(true または false)を表します。
- string[]:文字列値の配列を表します。
- 数値 []:数値の配列を表します。
- boolean[]: ブール値の配列を表します。
- 日付:単一の日付値を表します。
- date[]:日付値の配列を表します。
- 配列:様々なタイプの値を含む汎用の配列を表します。
- オブジェクト:値を直接渡す代わりに、カスタム関数に渡されるフォームオブジェクトを表します。
- scope: globals オブジェクトを表します。このオブジェクトには、フォームインスタンス、ターゲットフィールドインスタンス、カスタム関数内でフォームの変更を実行するためのメソッドなどの読み取り専用変数が含まれています。 これはJavaScript注釈の最後のパラメーターとして宣言され、アダプティブフォームのルールエディターには表示されません。 scope パラメーターは、フォームまたはコンポーネントのオブジェクトにアクセスして、フォームの処理に必要なルールまたはイベントをトリガーします。 Globals オブジェクトとその使用方法の詳細については、 ここをクリックしてください。
パラメータータイプは 大文字と小文字は区別されません で、パラメーター名にはスペースを使用できません。
パラメ <Parameter Description>
ターの目的に関する詳細が含まれています。 複数の単語を含めることができます。
戻り値タイプ
戻り値のタイプは、実行後にカスタム関数が返す値のタイプを指定します。 次の構文を使用して、カスタム関数で戻り値のタイプを定義します。
@return {type}
@returns {type}
{type}
は、関数の戻り値のタイプを表します。 使用できる戻り値のタイプは次のとおりです。- string:単一の文字列値を表します。
- 数値:1 つの数値を表します。
- ブール値:単一のブール値(true または false)を表します。
- string[]:文字列値の配列を表します。
- 数値 []:数値の配列を表します。
- boolean[]: ブール値の配列を表します。
- 日付:単一の日付値を表します。
- date[]:日付値の配列を表します。
- 配列:様々なタイプの値を含む汎用の配列を表します。
- object:値を直接表すのではなく、フォームオブジェクトを表します。
戻り値のタイプでは、大文字と小文字が区別されません。
非公開
プライベートとして宣言されたカスタム関数は、アダプティブフォームのルールエディターのカスタム関数のリストには表示されません。 デフォルトでは、カスタム関数はパブリックです。 カスタム関数をプライベートとして宣言する構文は @private
です。
カスタム関数の作成時のガイドライン considerations
ルールエディターにカスタム関数を一覧表示するには、次のいずれかの形式を使用できます。
Jsdoc コメント付きまたは付きでない Function ステートメント
カスタム関数を作成する際に、jsdoc コメントを含めることも、含めないこともできます。
function functionName(parameters)
{
// code to be executed
}
ユーザーがカスタム関数にJavaScript アノテーションを追加しない場合は、関数名によってルールエディターに表示されます。 ただし、カスタム関数を読みやすくするために、JavaScript アノテーションを含めることをお勧めします。
必須のJavaScript注釈またはコメントを含む矢印関数
矢印関数の構文を使用して、カスタム関数を作成できます。
/**
* test function
* @name testFunction
* @param {string} a parameter description
* @param {string=} b parameter description
* @return {string}
*/
testFunction = (a, b) => {
return a + b;
};
/** */
testFunction1=(a) => (return a)
/** */
testFunction2 = a => a + 100;
ユーザーがカスタム関数にJavaScript注釈を追加しない場合、カスタム関数はアダプティブフォームのルールエディターに表示されません。
必須のJavaScript注釈またはコメントを含む関数式
アダプティブフォームのルールエディターにカスタム関数をリストするには、次の形式でカスタム関数を作成します。
/**
* test function
* @name testFunction
* @param {string} input1 parameter description
* @param {string=} input2 parameter description
* @return {string}
*/
testFunction = function(input1,input2)
{
// code to be executed
}
ユーザーがカスタム関数にJavaScript注釈を追加しない場合、カスタム関数はアダプティブフォームのルールエディターに表示されません。
カスタム関数を作成するための前提条件
アダプティブFormsへのカスタム機能の追加を開始する前に、お使いのマシンに次のソフトウェアがインストールされていることを確認してください。
-
プレーンテキストエディター(IDE):任意のプレーンテキストエディターも使用できますが、Microsoft Visual Studio Code などの統合開発環境(IDE)は、編集を容易にする高度な機能を提供します。
-
Git: このバージョン管理システムは、コードの変更を管理するために必要です。 インストールされていない場合は、https://git-scm.comからダウンロードします。
カスタム関数の作成 create-custom-function
カスタム関数の作成手順は次のとおりです。
AEM プロジェクトアーキタイプを使用したクライアントライブラリの作成 create-client-library-archetype
AEM プロジェクトアーキタイプを使用して作成したプロジェクトにクライアントライブラリを追加することで、カスタム関数を追加できます。
既存のプロジェクトがある場合 、ローカルプロジェクトに カスタム関数を直接追加できます。
アーキタイププロジェクトを作成するか既存のプロジェクトを使用したら、クライアントライブラリを作成します。 クライアントライブラリを作成するには、次の手順を実行します。
クライアントライブラリフォルダーの追加
[AEM プロジェクトディレクトリ ] に新しいクライアントライブラリフォルダーを追加するには、次の手順に従います。
-
エディターで [AEM プロジェクトディレクトリ ] を開きます。
-
ui.apps
を見つけます。 -
新規フォルダーを追加します。 例えば、
experience-league
というフォルダーを追加します。 -
フォルダー
/experience-league/
移動し、ClientLibraryFolder
を追加します。 例えば、customclientlibs
という名前のクライアントライブラリフォルダーを作成します。場所:
[AEM project directory]/ui.apps/src/main/content/jcr_root/apps/
クライアントライブラリフォルダーへのファイルとフォルダーの追加
追加したクライアントライブラリフォルダーに次の内容を追加します。
.content.xml
ファイルjs.txt
ファイルjs
フォルダー
Location is: [AEMaaCS project directory]/ui.apps/src/main/content/jcr_root/apps/experience-league/customclientlibs/
-
.content.xml
で次のコード行を追加します。code language-javascript <?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" jcr:primaryType="cq:ClientLibraryFolder" categories="[customfunctionscategory]"/>
note note NOTE client library folder
およびcategories
プロパティには、任意の名前を付けることができます。 -
js.txt
で次のコード行を追加します。code language-javascript #base=js function.js
-
js
フォルダーに、Javascript ファイルをとして追加します。これには、カスタム関数が含まれfunction.js
います。code language-javascript /** * Calculates Age * @name calculateAge * @param {object} field * @return {string} */ function calculateAge(field) { var dob = new Date(field); var now = new Date(); var age = now.getFullYear() - dob.getFullYear(); var monthDiff = now.getMonth() - dob.getMonth(); if (monthDiff < 0 || (monthDiff === 0 && now.getDate() < dob.getDate())) { age--; } return age; }
-
ファイルを保存します。
新規フォルダーを filter.xml に含めます:
-
[AEMaaCS プロジェクトディレクトリ]内の
/ui.apps/src/main/content/META-INF/vault/filter.xml
ファイルに移動します。 -
ファイルを開き、最後に次の行を追加します。
<filter root="/apps/experience-league" />
-
ファイルを保存します。
-
ビルド方法セクションで説明されている手順に従って、新しく作成したクライアントライブラリフォルダーをAEM環境にビルドします。
CRXDE を通じたカスタム関数の作成とデプロイ create-add-custom-function
最新のAEM FormsおよびForms アドオンを使用している場合は、CRXDE を通じてカスタム関数を作成し、カスタム関数の最新のアップデートを使用できます。 それには、次の手順を実行します。
-
http://server:port/crx/de/index.jsp#
にログインします。 -
/apps
フォルダーの下にフォルダーを作成します。例えば、experience-league
という名前のフォルダーを作成します。 -
変更を保存します。
-
作成したフォルダーに移動し、タイプ
cq:ClientLibraryFolder
のノードをclientlibs
として作成します。 -
新しく作成した
clientlibs
フォルダーに移動し、allowProxy
プロパティとcategories
プロパティを追加します。note note NOTE customfunctionsdemo
の代わりに任意の名前を指定できます。 -
変更を保存します。
-
clientlibs
フォルダーの下にjs
というフォルダーを作成します。 -
js
フォルダーの下にfunctions.js
というJavaScript ファイルを作成します。 -
clientlibs
フォルダーの下にjs.txt
というファイルを作成します。 -
変更を保存します。
作成したフォルダー構造は次のようになります。 -
functions.js
ファイルをダブルクリックして、エディターを開きます。ファイルは、カスタム関数のコードを含みます。
JavaScript ファイルに次のコードを追加して、生年月日(YYYY-MM-DD)に基づいて年齢を計算しましょう。code language-javascript /** * Calculates Age * @name calculateAge * @return {string} */ function calculateAge(dateOfBirthString) { var dob = new Date(dateOfBirthString); var now = new Date(); var age = now.getFullYear() - dob.getFullYear(); var monthDiff = now.getMonth() - dob.getMonth(); if (monthDiff < 0 || (monthDiff === 0 && now.getDate() < dob.getDate())) { age--; } return age; }
-
function.js
を保存します。 -
js.txt
に移動し、次のコードを追加します。code language-javascript #base=js functions.js
-
js.txt
ファイルを保存します。
次の カスタム関数フォルダーを参照できます。 このフォルダーをダウンロードしてAEM インスタンスにインストールします。
これで、クライアントライブラリを追加して、アダプティブフォームでカスタム関数を使用できるようになりました。
アダプティブフォームへのクライアントライブラリの追加 add-client-library
クライアントライブラリをAEM Forms環境にデプロイしたら、アダプティブフォームでその機能を使用します。 アダプティブフォームにクライアントライブラリを追加するには、次の手順に従います
-
フォームを編集モードで開きます。 フォームを編集モードで開くには、フォームを選択し、「編集」を選択します。
-
コンテンツブラウザーを開き、アダプティブフォームの ガイドコンテナ コンポーネントを選択します。
-
ガイドコンテナのプロパティアイコンをクリックします。 アダプティブフォームコンテナダイアログボックスが開きます。
-
「基本」タブを開き、ドロップダウンリストから クライアントライブラリカテゴリ の名前を選択します(この場合は「
customfunctionscategory
」を選択します)。 -
「完了」をクリックします。
これで、ルールエディターでカスタム関数を使用するルールを作成できます。
次に、AEM Forms 6.5 で ルールエディターの呼び出しサービスを使用してカスタム関数を設定および使用する方法を説明しす。
アダプティブフォームでのカスタム関数の使用 use-custom-functions
アダプティブフォームでは、 ルールエディター内のカスタム関数を使用できます。
JavaScriptのファイル(Function.js
ファイル)に次のコードを追加して、生年月日(YYYY-MM-DD)に基づいて年齢を計算しましょう。 生年月日を入力として取得し、年齢を返すカスタム関数を calculateAge()
として作成します。
/**
* Calculates Age
* @name calculateAge
* @param {object} field
* @return {string}
*/
function calculateAge(field) {
var dob = new Date(field);
var now = new Date();
var age = now.getFullYear() - dob.getFullYear();
var monthDiff = now.getMonth() - dob.getMonth();
if (monthDiff < 0 || (monthDiff === 0 && now.getDate() < dob.getDate())) {
age--;
}
return age;
}
上記の例では、ユーザーが誕生日を(YYYY-MM-DD)形式で入力すると、カスタム関数 calculateAge
が呼び出され、年齢が返されます。
フォームをプレビューして、ルールエディターを介してカスタム関数がどのように実装されているかを確認します。
カスタム関数での非同期関数のサポート support-of-async-functions
非同期カスタム関数がルールエディターリストに表示されない。 ただし、同期関数式を使用して作成されたカスタム関数内で、非同期関数を呼び出すことができます。
カスタム関数を使用して非同期関数を呼び出す方法については、以下のコードを参照してください。
async function asyncFunction() {
const response = await fetch('https://petstore.swagger.io/v2/store/inventory');
const data = await response.json();
return data;
}
/**
* callAsyncFunction
* @name callAsyncFunction callAsyncFunction
*/
function callAsyncFunction() {
asyncFunction()
.then(responseData => {
console.log('Response data:', responseData);
})
.catch(error => {
console.error('Error:', error);
});
}
上記の例では、asyncFunction 関数は asynchronous function
です。 https://petstore.swagger.io/v2/store/inventory
に対して GET
リクエストを実行することで、非同期操作を実行します。 await
を使用して応答を待ち、response.json()
を使用して応答本文を JSON として解析し、データを返します。 callAsyncFunction
関数は、asyncFunction
関数を呼び出してコンソールに応答データを表示する同期カスタム関数です。 callAsyncFunction
関数は同期していますが、非同期の asyncFunction 関数を呼び出し、then
文と catch
文で結果を処理します。
動作を確認するには、ボタンを追加し、ボタンクリック時に非同期関数を呼び出すボタンのルールを作成します。
ユーザーが「Fetch
」ボタンをクリックすると、カスタム関数 callAsyncFunction
が呼び出され、非同期関数 asyncFunction
が呼び出されることを示すには、以下のコンソールウィンドウの図を参照してください。 コンソールウィンドウをInspectして、ボタンがクリックされたときの応答を確認します。
カスタム関数の機能について説明します。
カスタム関数の様々な機能
カスタム関数を使用すると、パーソナライズされた機能をフォームに追加できます。 これらの関数は、特定フィールドの操作、グローバルフィールドの使用、キャッシュなど、様々な機能をサポートします。 この柔軟性により、組織の要件に応じてフォームをカスタマイズできます。
カスタム関数のフィールド オブジェクトとグローバル スコープ オブジェクト support-field-and-global-objects
フィールドオブジェクトとは、テキストフィールド、チェックボックスなど、フォーム内の個々のコンポーネントまたは要素を指します。 Globals オブジェクトには、フォームインスタンス、ターゲットフィールドインスタンス、カスタム関数内でフォームの変更を実行するメソッドなどの読み取り専用変数が含まれています。
param {scope} globals
は最後のパラメーターである必要があり、アダプティブフォームのルールエディターには表示されません。カスタム関数でフィールドおよびグローバルオブジェクトを使用する方法を、様々な使用例を使用する Contact Us
フォームを利用して説明します。
ユースケース:SetProperty
ルールを使用したパネルの表示
create-custom-function の節で説明したように、カスタム関数に次のコードを追加して、フォームフィールドを Required
として設定します。
/**
* enablePanel
* @name enablePanel
* @param {object} field1
* @param {object} field2
* @param {scope} globals
*/
function enablePanel(field1,field2, globals)
{
if(globals.functions.validate(field1).length === 0)
{
globals.functions.setProperty(field2, {visible: true});
}
}
[form-path]/jcr:content/guideContainer.model.json
にある使用可能なプロパティを使用して、フィールドのプロパティを設定できます。- Globals オブジェクトの
setProperty
メソッドを使用してフォームに加えられた変更は、本質的に非同期であり、カスタム関数の実行中には反映されません。
この例では、ボタンをクリックすると personaldetails
パネルの検証が行われます。 パネルでエラーが検出されない場合は、ボタンをクリックすると、feedback
のパネルが表示されます。
Next
ボタンのルールを作成してみましょう。このルールは、personaldetails
パネルを検証し、ユーザーが Next
ボタンをクリックすると feedback
パネルが表示されるようにします。
「Next
」ボタンをクリックしたときに personaldetails
パネルが検証される場所を示すには、以下の図を参照してください。 personaldetails
ージ内のすべてのフィールドが検証されると、feedback
のパネルが表示されます。
personaldetails
パネルのフィールドにエラーがある場合、エラーは「Next
」ボタンをクリックするとフィールドレベルに表示され、feedback
パネルは非表示のままになります。
ユースケース:フィールドを検証します。
create-custom-function の節で説明したように、カスタム関数に次のコードを追加して、フィールドを検証します。
/**
* validateField
* @name validateField
* @param {object} field
* @param {scope} globals
*/
function validateField(field,globals)
{
globals.functions.validate(field);
}
validate()
関数で引数が渡されない場合は、フォームが検証されます。この例では、「contact
」フィールドにカスタムの検証パターンが適用されます。 ユーザーは、10
で始まり、その後 8
桁が続く電話番号を入力する必要があります。 ユーザーが 10
で始まらない電話番号や、8
桁以下の電話番号を入力した場合、ボタンをクリックすると検証エラーメッセージが表示されます。
次の手順では、ボタンクリック時に contact
フィールドを検証する Next
ボタンのルールを作成します。
次の図を参照して、ユーザーが 10
で始まらない電話番号を入力した場合、フィールドレベルにエラーメッセージが表示されることを示してください。
ユーザーが有効な電話番号を入力し、personaldetails
ントロールパネル内のすべてのフィールドが検証されると、feedback
ントロールパネルが画面に表示されます。
ユースケース:パネルのリセット
create-custom-function の節で説明したように、カスタム関数に次のコードを追加して、パネルをリセットします。
/**
* resetField
* @name resetField
* @param {string} input1
* @param {object} field
* @param {scope} globals
*/
function resetField(field,globals)
{
globals.functions.reset(field);
}
reset()
関数で引数が渡されない場合は、フォームが検証されます。この例では、「Clear
」ボタンをクリックすると、personaldetails
パネルがリセットされます。 次の手順では、ボタンクリック時にパネルをリセットする Clear
ボタンのルールを作成します。
ユーザーが「clear
」ボタンをクリックすると、personaldetails
パネルがリセットされることを示す次の図を参照してください。
ユースケース:フィールドレベルでカスタムメッセージを表示し、フィールドを無効としてマークする
markFieldAsInvalid()
関数を使用して、フィールドを無効として定義し、フィールドレベルでカスタムのエラーメッセージを設定できます。 fieldIdentifier
の値は、fieldId
、field qualifiedName
、field dataRef
のいずれかです。 option
という名前のオブジェクトの値は、{useId: true}
、{useQualifiedName: true}
、{useDataRef: true}
のいずれかです。
フィールドを無効としてマークし、カスタムメッセージを設定するために使用される構文は次のとおりです。
globals.functions.markFieldAsInvalid(field.$id,"[custom message]",{useId: true});
globals.functions.markFieldAsInvalid(field.$qualifiedName, "[custom message]", {useQualifiedName: true});
globals.functions.markFieldAsInvalid(field.$dataRef, "[custom message]", {useDataRef: true});
create-custom-function の節で説明したように、カスタム関数に次のコードを追加して、フィールドレベルでカスタムメッセージを有効にします。
/**
* customMessage
* @name customMessage
* @param {object} field
* @param {scope} globals
*/
function customMessage(field, globals) {
const minLength = 15;
const comments = field.$value.trim();
if (comments.length < minLength) {
globals.functions.markFieldAsInvalid(field.$id, "Comments must be at least 15 characters long.", { useId: true });
}
}
この例では、ユーザーがコメント テキストボックスに 15 文字未満で入力すると、カスタムメッセージがフィールドレベルに表示されます。
次に、comments
フィールドのルールを作成します。
comments
のフィールドに負のフィードバックを入力すると、フィールドレベルでのカスタムメッセージの表示がトリガーされることを示す、以下のデモを参照してください。
ユーザーがコメントテキストボックスに 15 文字を超える文字を入力すると、フィールドが検証され、フォームが送信されます。
ユースケース:変更されたデータのサーバーへの送信
次のコード行:globals.functions.submitForm(globals.functions.exportData(), false);
は、操作後にフォームデータを送信するために使用されます。
- 最初の引数は、送信するデータです。
- 2 番目の引数は、送信前にフォームを検証するかどうかを表します。 このプロパティは
optional
であり、デフォルトではtrue
として設定されます。 - 3 番目の引数は送信
contentType
です。デフォルト値をmultipart/form-data
にした場合もオプションとなります。 その他の値は、application/json
とapplication/x-www-form-urlencoded
です。
create-custom-function の節で説明したように、カスタム関数に次のコードを追加して、操作されたデータをサーバーで送信します。
/**
* submitData
* @name submitData
* @param {object} field
* @param {scope} globals
*/
function submitData(globals)
{
var data = globals.functions.exportData();
if(!data.comments) {
data.comments = 'NA';
}
console.log('After update:{}',data);
globals.functions.submitForm(data, false);
}
この例では、ユーザーが comments
テキストボックスを空のままにした場合、NA
ータはフォームの送信時にサーバーに送信されます。
次に、データを送信する「Submit
」ボタンのルールを作成します。
ユーザーが comments
テキストボックスを空のままにした場合、NA
の値がサーバーで送信されることを示すには、以下の console window
の図を参照してください。
また、コンソールウィンドウを調べて、サーバーに送信されたデータを表示することもできます。
カスタム関数のキャッシュサポート
アダプティブFormsは、カスタム関数のキャッシュを実装して、ルールエディターでカスタム関数のリストを取得する際の応答時間を短縮します。 error.log
ファイルに Fetched following custom functions list from cache
のようなメッセージが表示されます。
カスタム関数が変更されると、キャッシュが無効化され、解析されます。
トラブルシューティング troubleshooting
-
ユーザーは、 コアコンポーネントと仕様のバージョンが最新バージョンに設定されていることを確認する必要があります。 ただし、既存のAEM プロジェクトおよびフォームの場合は、さらに次の手順に従う必要があります。
-
AEM プロジェクトの場合、
submitForm('custom:submitSuccess', 'custom:submitError')
のすべてのインスタンスをsubmitForm()
に置き換え、プロジェクトをデプロイする必要があります。 -
既存のフォームで、カスタム送信ハンドラーが正しく機能しない場合は、ユーザーがルールエディターを使用して 送信 ボタンで
submitForm
ルールを開いて保存する必要があります。 この操作を実行すると、既存のルールがsubmitForm('custom:submitSuccess', 'custom:submitError')
からフォーム内のsubmitForm()
に置き換えられます。
-
-
カスタム関数のコードを含んだJavaScript ファイルにエラーがある場合、カスタム関数はアダプティブフォームのルールエディターに表示されません。 カスタム関数のリストを確認するには、エラーの
error.log
ファイルに移動します。 エラーが発生すると、カスタム関数のリストは空で表示されます。エラーがない場合、カスタム関数が取得され、
error.log
ファイルに表示されます。error.log
ファイルにFetched following custom functions list
のようなメッセージが表示されます。
考慮事項
-
parameter type
とreturn type
はNone
をサポートしていません。 -
カスタム関数リストでサポートされていない関数は次のとおりです。
- ジェネレーター関数
- 非同期/待機関数
- メソッドの定義
- クラスメソッド
- デフォルトのパラメーター
- REST パラメーター