# UI5-Validator > [**English**](README.md) [![npm version](https://badge.fury.io/js/@learnin%2Fui5-validator.svg)](https://badge.fury.io/js/@learnin%2Fui5-validator) `UI5-Validator` は SAPUI5 または OpenUI5 アプリケーション向けのバリデーションライブラリです。 SAPUI5/OpenUI5(以降、UI5と記述)標準の `required` 属性やメッセージ管理の仕組み[^1] を利用しており、また、 `constraints` 属性による標準バリデーションと共存する仕組みのため、バリデーション対象コントロールに独自の属性やコントロールを追加する必要がありません。 `UI5-Validator` が提供するのは必須入力バリデーションと任意のバリデーションロジックを管理する仕組みであり、バリデーションロジックは自由に実装して利用することができます。 [^1]: `sap.ui.core.message.MessageManager` を利用。これは SAPUI5/OpenUI5 1.118 で非推奨となり、 `sap.ui.core.Messaging` が推奨となっている。なお、API はあまり変わっていない。 ## 機能 - UI5 標準の `required` 属性による必須バリデーション - UI5 標準の `constraints` と合わせて実行可能 - 単項目バリデーションや複数項目相関バリデーション等、任意のバリデーションロジックを実装して利用可能 - 任意のバリデーションロジックは UI5 標準の `constraints` と同様にフォーカスアウト時に実行させることも可能 - ビュー丸ごとでもコントロール単位でもバリデーション可能 - `sap.ui.table.Table` や `sap.m.Table` 内のコントロールもバリデーション可能 ## デモ [デモ](https://learnin.github.io/ui5-validator/demo/) デモのソースコードは [example](example) を参照ください。 ## API ドキュメント [API ドキュメント](https://learnin.github.io/ui5-validator/api/ja/) ## なぜバリデーションライブラリが必要か? UI5 ではバリデーション機能が提供されており、バリデーション対象コントロールに `constraints` 属性を設定することによりフォーカスアウト時にバリデーションが実行される。 ただし、この標準バリデーションの仕組みだけでは一般的なアプリケーション開発において必要とされる次のニーズに対応できない。 - 必須入力チェック - 複数項目間の相関チェック(e.g. 開始日と終了日の前後関係チェック) - `constraints` で提供されていないルールによるチェック これらを1つずつ自前で実装することは可能ではあるが、次のようなことを考慮すると、かなりの実装が必要になり、共通化も必要となる。 結果として、必要な仕組みを実装済のライブラリを導入するのが現実的と考える。 - アクションボタン(e.g. 保存ボタン)を押したタイミングで、標準バリデーションと自前実装によるバリデーションの両方の結果のメッセージを合わせて表示したい - エラーメッセージの表示の仕方を標準バリデーションと合わせたい - メッセージの表示順も標準バリデーションと独自バリデーションで離れることなくコントロール毎に表示したい ## セットアップ ```bash npm install @learnin/ui5-validator ``` 以降の説明では、次のプロジェクトレイアウトを想定する。 あなたのプロジェクトのレイアウトが異なる場合は、レイアウトに合わせてパスを調整してください。 ``` node_modules/ webapp/ controller/ view/ ... Component.js index.html manifest.json package-lock.json package.json ui5.yaml ``` `webapp/libs` ディレクトリを作成し、 `node_modules/@learnin/ui5-validator/dist/resources/` 配下のファイルを `libs` の中にコピーする。 `manifest.json` に次のように `sap.ui5.dependencies.libs.learnin.ui5.validator` と `sap.ui5.resourceRoots.learnin.ui5.validator` を追加する。 また、標準バリデーションを有効にするために、 `sap.ui5.handleValidation` を `true` に設定する。 ```json { // ... "sap.ui5": { // ..., "handleValidation": true, "dependencies": { // ..., "libs": { // ..., "learnin.ui5.validator": {} } }, "resourceRoots": { "learnin.ui5.validator": "./libs/learnin/ui5/validator/" }, // ... ``` ## 使い方 ### 基本的な使用方法 ビュー: 必須入力コントロールは `required` 属性を `true` に設定する。 型や桁数チェックは `type` および `constraints` 属性で指定する。 `UI5-Validator` 独自のものはなく、標準 API を使って指定するだけ。 cf. https://sdk.openui5.org/topic/07e4b920f5734fd78fdaa236f26236d8 ```xml ...