フォームへの入力を検証する
フォームが送信されると、OutSystemsでは、ビルトイン検証機能が必須項目や有効なデータ型に対して実行されます。独自のカスタムフォーム検証も追加可能です。
モバイルアプリでは、フォームが送信される際に実行されるクライアントアクションを使用して、クライアント側の検証を実行します。すべての検証を、アクションフローのForm.Validの値をテストする既存のIf要素の前に追加します。
各検証について、以下の手順を実行します。
- 入力値を検証するためのロジックを追加します。例としてIf要素を使用します。
- バリデーションに失敗した場合は、入力のランタイムプロパティを以下のように設定します。
Input.Valid = False
Input.ValidationMessage = "<エラーメッセージ>"
ビルトイン検証が1つでも失敗した場合、あるいはフォームの任意のフィールドのValidランタイムプロパティにFalse
が割り当てられていた場合、フォームのValidプロパティには自動的にFalse
が割り当てられます。この場合、無効なすべての対応する入力の横に検証メッセージが表示されます。入力をサーバー側で検証する場合は、サーバー側の検証ロジックを実装したサーバーアクションに入力を送信します。
Webアプリでは、フォームが送信される際に実行されるサーバーアクションを使用して、フォームの検証を実装します。すべての検証をアクションフローの最初に追加します。
- 各検証について、以下の手順を実行します。
- 入力値を検証するためのロジックを追加します。例としてIf要素を使用します。
- バリデーションに失敗した場合は、入力のランタイムプロパティを以下のように設定します。
Input.Valid = False
Input.ValidationMessage = "<エラーメッセージ>"
- すべての入力を検証した後、Form.Validの値を確認します。無効な入力が1つでもある場合、フォームも無効になります。
- If要素を以下の条件で追加します。
Form.Valid
True
の場合は、アクションフローを継続します。False
の場合は、アクションフローを終了します。無効な入力の横に検証メッセージが表示されます。
- If要素を以下の条件で追加します。
ビルトイン検証が1つでも失敗した場合、あるいはフォームの任意のフィールドのValidランタイムプロパティにFalse
が割り当てられていた場合、フォームのValidプロパティには自動的にFalse
が割り当てられます。この場合、無効なすべての対応する入力の横に検証メッセージが表示されます。
モバイルアプリの例
場所の検索レビュー、評価ができるモバイルアプリケーションであるGoOutアプリケーションで、レビューコメントの最小文字数を30文字に設定します。レビューを送信するための[WriteReview]画面が用意されています。画面には[Save]ボタンがあり、Saveクライアントアクションが呼び出されます。検証を実装するには、以下の手順を実行します。
- If要素を以下の条件でフローに追加します。
Length(Review.Comments) >= 30
- Falseブランチでランタイムプロパティを設定します。
TextArea_Comments.Valid = False
TextArea_Comments.ValidationMessage = "Write at least 30 characters."
- If要素とAssign要素を連結してアクションフローを継続します。
- パブリッシュして、30文字未満のレビューを追加するテストを行います。
Webアプリの例
場所の検索、レビュー、評価ができるWebアプリケーションであるGoOutWebアプリケーションで、レビューコメントの最小文字数を30文字に設定します。レビューを送信するフォームがホームページにあります。画面には[Save]ボタンがあり、Save画面アクションが呼び出されます。
検証を実装するには、以下の手順を実行します。
- If要素を以下の条件でフローに追加します。
Length(ReviewForm.Record.Review.Comments) >= 30
False
ブランチでランタイムプロパティを設定します。Review_Comments.Valid = False
Review_Comments.ValidationMessage = "The minimum is 30 characters"
- If要素を以下の条件で追加します。
Form.Valid
True
の場合は、アクションフローを継続します。False
の場合は、アクションフローを終了します。- パブリッシュして、30文字未満のレビューを追加するテストを行います。