Rich UI での書式処理
Rich UI は、ビジネス・ソフトウェアで従来から行われている種類の書式処理を実装する方法を提供します。処理は、単一ビュー (ウィジェット) を単一モデル (データ・フィールド) に関連付ける定義である Rich UI コントローラーに依存しています。Rich UI コントローラーの詳細については、『Rich UI の検査およびフォーマット設定』を参照してください。
- アプリケーションがデータを公開します。つまり、ユーザーにデータを提供します。
- ユーザーがデータを更新し、ボタンをクリックまたはキーを押すことによりデータを送信します。
- コードが入力を検証し、検証されたデータをすべてサービスに送信し、ユーザーに応答します。
- 書式マネージャーは、以下の機能を提供するハンドラー宣言です。
- 書式フィールドのセットを定義します。それぞれの書式フィールドに、フィールド・ラベル、コントローラー、およびエラー・フィールドを含めることができます。表示可能コンポーネントは、ユーザー・インターフェース上のどこにあってもかまわず、相互に分離していてもかまいません。
- 書式フィールドのセットを処理します (出力のフォーマット設定、入力の検証、入力のフォーマット解除など)。例えば、金額値を NUM 型のフィールドに格納する場合、値を格納する前に入力値から通貨記号が除去されます。
書式マネージャーとの対話は、コードの記述、または Rich UI エディターが提供するコードを使用することにより行います。
以下に、書式マネージャーの宣言を示します。employeeForm FormManager { entries = [ new FormField { nameLabel="Name:", controller=nameController }, new FormField { nameLabel="Age:", controller=ageController }, new FormField { nameLabel="Salary:", controller=salaryController } ]}; - 検証書式は、書式フィールドのセットの定義および処理も行うことができるコンテナーです。検証書式は簡単に使用できますが、あまり柔軟ではありません。書式フィールドの表示可能な外観を最大で 3 つの列で調整する必要があります。この場合の表示可能な外観には、ラベル、コントローラー・ビュー、およびエラー・フィールドがあります。以下に、検証書式の宣言を示します。
employeeForm ValidatingForm { entries = [ new FormField { displayName="Name:", controller=nameController }, new FormField { displayName="Age:", controller=ageController }, new FormField { displayName="Salary:", controller=salaryController } ]};検証書式を使用する場合、書式フィールドでは displayName 値と controller 値のみを指定します。残りの値は、検証書式自体によって処理されます。
いずれの場合でも、それぞれの書式フィールドを順番に処理する関数を呼び出します (例えば、書式全体の検証)。
書式開発の開始点
- Rich UI エディターでハンドラーを開き、レコード定義を「設計」タブにドラッグ・アンド・ドロップします。
- 『Rich UI エディターへのデータのドラッグによるウィジェットの作成』で説明されているように、ウィザードを処理します。
- 書式マネージャー。宣言内の書式フィールドは、ユーザーのニーズに固有です。
- 書式マネージャーの汎用的な書式処理ロジックにアクセスする関数。
書式フィールド
書式フィールドは、それ自体データの集合 (FormField 型のレコード) です。レコードの使用方法は、書式マネージャーの場合と検証書式の場合で異なります。それらのメカニズムの両方に単一のレコード・タイプを使用することにより、2 つのメカニズム間で簡単に切り替えることができます。
次の表に示されているように、使用目的に適したレコード・フィールドを設定します。
| タイプ FormField のレコード内のフィールド | フィールド値 | コンテキスト | 詳細 |
|---|---|---|---|
| controller | コントローラー | 書式マネージャーまたは検証書式 | コントローラーは、ビューをモデルに関連付ける定義です。 |
| displayName | String? | 検証書式 | 検証書式によって提供されるフィールド・ラベルにストリングが割り当てられます。書式マネージャーを使用している場合、そのストリングは無視されます。 |
| errorLabel | TextLabel | 書式マネージャー | errorLabel という名前のテキスト・ラベルはエラー・フィールドです。書式フィールドの検証中に出力されるエラー・メッセージが表示されます (ある場合)。エラー・フィールドの外観は、エラー発生時に変更されます。 書式マネージャーを使用している場合は、書式フィールドを宣言するときにテキスト・ラベルを指定します。ただし、検証書式を使用している場合は、テキスト・ラベルは自動的に指定されます。 |
| nameLabel | TextLabel | 書式マネージャー | 書式フィールドのラベル。検証書式を使用している場合、この設定は無視されます。検証書式は、ラベルを提供し、そのラベルに displayName 値を割り当てます。 |
| labelClass | String? | Rich UI で使用 | CSS クラス。この値は変更しないでください。これは、エラーが解決された後で書式フィールド・ラベルを元の外観に変更するために使用されます。 クラス名は EglRuiTextLabel です。エラー発生時にも同じクラス名が使用されますが、2 次クラス FormErrorLabel が追加されます。 |
検証書式を処理する場合は、controller 値と displayName 値を指定します。 書式マネージャーを処理する場合は、controller 値と nameLabel 値、およびオプションで errorLabel 値を指定します。
書式レベル関数
書式レベル関数はコントローラー固有の関数を呼び出します。呼び出しの順序は、entries 配列の書式フィールドの順序とは逆になります。
if (employeeForm.isValid())
employeeForm.commit();
end
検証の最後にコントローラー自体がコントローラー固有の validStateSetter 関数を呼び出します。
- 書式レベル isValid 関数を呼び出すと、すべてのコントローラーについて順に次の効果が発生します。
- コントローラーの isValid 関数 (コントローラー定義で参照されている validator 関数を呼び出す) を呼び出します。このプロセスには、コントローラー・モデルの isDecimalDigit プロパティーに関するものなど、基本的な検証も含まれます。
- コントローラーの validStateSetter 関数を呼び出します。 デフォルトでは、この関数は書式レベル validStateSetter 関数です。
- すべてのコントローラー・ビューが有効なデータを含んでいる場合、コードは書式レベル commit 関数を呼び出します。その関数は、各コントローラー固有 commit 関数を呼び出し、コントローラー・ビューのデータのフォーマット解除、およびコントローラー・モデルへの値の書き込みを行います。
if (employeeForm.isValid())
if (myValidation())
employeeForm.commit();
end
end
以下に、書式レベルの関数をアルファベット順に示します。
- commit()
- 1 つのコマンドですべてのビューを関連モデルにコミットできるようにします。
書式レベル commit 関数を起動すると、すべてのモデル・データをサービスに転送できます。
この関数には、パラメーターや戻り値はありません。
- isFormValid()
この関数にパラメーターはなく、すべての書式フィールドの検証が成功したかどうかを示す Boolean 値が返されます。この関数と isValid() との違いは、この関数が有効な状態変更リスナーに通知しないことです。
- isValid()
- コントローラー固有の isValid 関数を呼び出します。
- この関数にパラメーターはなく、すべての書式フィールドの検証が成功したかどうかを示すブール値を戻します。
- publish()
- 各コントローラー固有 publish 関数を呼び出し、コントローラー・モデルに格納されているデータのフォーマット設定、およびフォーマット設定されたデータのコントローラー・ビューへの書き込みを行います。コードでは、書式レベルの publish コマンドをコールバック関数で呼び出すことができます。この関数は、コードがサービスから戻されたデータを受け取った後で呼び出されます。
この関数には、パラメーターや戻り値はありません。
- validate()
- コントローラー固有の validate 関数を呼び出します。
この関数にはパラメーターはなく、検証が成功したかどうか (つまり、すべてのコントローラー固有の validate 関数がヌルまたはブランクのどちらを返したか) を示す Boolean 値が返されます。