1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OutSystemsのReactive Web App更新処理のバリデーション

Posted at

ある日、Reactive Web Appでは、更新処理におけるバリデーションをどうすべきか? という話をチーム内でしたのですが、2020/5時点では、この部分のドキュメントがまだ日本語になっていないようなので記録しておきます。

ドキュメント(英語):
Validate the fields of a form

サンプル

https://www.outsystems.com/forge/Component_Overview.aspx?ProjectId=7086
Validation Screenを参照してください。

Reactive Web Appの更新時バリデーション実装方針

Reactive Web Appの場合、以下の方針で作るのが、実装コストが低く、アーキテクチャ設計ルールにも適合するのではないかと思います。

データの整合性を保つためにも、サーバ側のチェックは必須です。クライアント側は省く余地がありますが、型チェックと必須チェックだけであれば自動生成なのでわざわざ省く必要もないでしょう。

実装手順

  1. 画面にForm Widgetを配置
  2. Entity型の変数をドラッグ&ドロップしてInput/Button Widgetを自動作成する
  3. 必要に応じてUIを修正する
  4. ButtonのOn Clickの(New Client Action)を選択してActionを作成。Built-in ValidationsはYesのままにしておく
  5. Server側実装で作成するServer Actionを呼ぶ
  6. Server Actionの結果をUIに反映する

Input Widget

qForm1.PNG

Mandatoryプロパティは、その項目への入力が必須かどうかを設定します。Save Buttonをクリックしたときに該当項目が未入力だと、Input Widgetの下に必須項目であることを示すメッセージを表示します。

Input Typeプロパティは入力方式を規定します。Numberなら数値のみ入力可能になります。Numberにした場合、整数の他に小数も入力可能。ただし、Variableプロパティで指定した変数の型がIntegerであれば、小数を入力するとエラーになります。これが、自動生成される型チェック。

Button Widget

qForm2.PNG

Formに配置されたButton WidgetのEvents>On Click>Built-in Validations=Yesにしておくと、Buttonをクリックしたときに、上で設定したMandatoryとData Typeによるチェックがききます。

下の例でいうと、Text AttributeがMandatoryのチェック違反、Integer AttributeがData Typeによる型チェックの例です。
qForm3.PNG

上のように自動生成される必須・型チェックに失敗していると、対応するInput WidgetのValid=Falseとなり、ValidationMessageにはInput Widgetの下に赤字で表示するテキストが表示されます。
qForm4.PNG

サーバ側で必須・型以外のチェックを行う

サーバ側で何らかのバリデーションを行い、発生したエラーをServer ActionのOutput Parameterとして返し、Client Actionでエラーを表示する処理を書きます。

単独の列の値に関するエラーの場合

特定の列に完全に紐付けられるエラーであれば、組み込みのバリデーションと同じようにInput Widgetの下に表示するのがいいでしょう。

Input WidgetのValidプロパティにFalse、ValidationMessageに表示したいエラーメッセージを設定してください。
qForm5.PNG

特定の列に限定できないエラーの場合

こういうときは、通常のエラー表示と同じようにするしかないです。
Messageを使うか、Alert Widgetを使うといいのではないかと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?