Validations
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

フィールド検証の追加

Liferay DXP 2023.Q3+/Portal GA92+

検証は、有効なフィールドエントリーを決定するためのルールを設定します。 各検証にはそれぞれ独自のトリガー、条件、エラーメッセージがあり、これらはオブジェクトUIから設定できます。 Groovyスクリプト または Liferay式を使って検証を定義できます。

Liferay DXP 2024.Q1+/GA112+以降では、3つ目の検証方法が利用可能です。 複合キー検証。 複合キー検証を使用して、2つ以上のフィールドの組み合わせが一意であることを要求します。

カスタムオブジェクトフィールドとシステムオブジェクトフィールドの検証ルールを作成します。

注記
  • 標準の検証がニーズを満たさない場合は、 objectValidationRule クライアント拡張機能を使用してカスタム検証を作成できます。 詳細については、 マイクロサービス クライアント拡張機能 を参照してください。
  • システムオブジェクトの検証メッセージは、ネイティブのユーザーインターフェースには表示されない場合があります。 しかし、検証は想定どおりに実行されます。

検証を追加するには、

  1. グローバルメニュー ( Global Menu ) を開き、 コントロールパネル → オブジェクト に移動します。

  2. オブジェクト定義の編集を開始します。

  3. 検証 タブに移動し、 追加 ( Add Button )をクリックします。

  4. ラベル を入力し、検証タイプを選択します: Groovy、 式ビルダー、または 複合キー。

    オブジェクト検証ルールのクライアント拡張機能をインスタンスにデプロイしている場合、それらもオプションとして表示されます。

    ラベルを入力し、検証タイプを選択してください。

  5. をクリックして保存します。

  6. 検証の編集を開始します。

  7. 「基本情報」タブで、検証を有効にします。

    検証を有効にしてください。

  8. 検証が実行されるタイミングを決定するには、 トリガーイベント を選択します。

    各検証には、トリガーイベントを1つしか設定できません。

  9. 検証ルールを追加します。

    Groovy および Expression Builder による検証を行うには、「条件」タブに移動し、検証に条件を追加してください。

    条件には、複雑なロジックを実行するための複数のフィールドと関数が含まれる場合があります。

    検証に条件を追加します。

    Groovyを使用する場合、サイドパネルから利用可能なデータフィールドを参照して条件に追加できます。 詳細については、 Groovy 検証の使用 を参照してください。

    式ビルダーを使用する場合、サイドパネルから条件にフィールド、演算子、関数を参照して追加できます。 詳細については、 式ビルダー検証の使用 を参照してください。

    重要
    • Groovyスクリプトの検証機能は、Liferay PaaSおよびLiferay DXP Self-Hostedでのみ利用可能です。
    • DXP 2024.Q3以降、スクリプト機能はデフォルトで無効になっています。 システム設定 → スクリプト管理(セキュリティカテゴリ内)で有効にできます。

    複合キー検証を設定するには、[ 一意の複合キー ] タブに移動し、複合キーとして使用するフィールドを選択します。 詳細については、 複合キー検証の使用 を参照してください。

    複合キーとして使用するフィールドを選択してください。

  10. ローカライズ可能なエラーメッセージ を入力してください。 このメッセージは、検証がトリガーされた際に、入力されたフィールドの値が定義された条件の1つ以上を満たしていない場合に発生します。

  11. エラーメッセージが表示される場所を指定するには、出力検証タイプを選択してください。

    完全な検証 (フォームの概要): フォームの上部にエラーメッセージを表示します。

    部分検証 (インラインフィールド): 指定されたフィールドの横にエラーメッセージを表示します。 この機能はオブジェクトレイアウトでは動作しません。

    エラーメッセージを入力し、出力検証タイプを選択してください。

  12. をクリックして保存します。

有効化されている間は、検証はすべての新しいオブジェクトエントリに対して実行され、 レイアウト および フォームコンテナ に表示されます。 検証結果はフォームコンテナ内に表示されます。

Groovyのバリデーションを使用する

Liferay PaaSとLiferay DXPのセルフホスト型

重要

DXP 2024.Q3以降、スクリプト機能はデフォルトで無効になっています。 システム設定 → スクリプト管理(セキュリティカテゴリ内)で有効にできます。

Groovy の検証は、すべての標準 Groovy スクリプト 機能をサポートしています。 条件を定義する際には、 invalidFields 変数を使用する必要があります。 Liferay は invalidFields が true を返す場合にのみ検証エラー メッセージを表示します。

サイドパネルを使用して、Groovy検証にフィールド要素を追加します。

Liferay は GroovyShell クラス を使用して、 保存 をクリックしたときに Groovy スクリプトの構文が有効かどうかをチェックします。 スクリプトが無効な場合、Liferayはエラーメッセージを表示します。

式ビルダー検証の使用

式ビルダーには、要素サイドパネルからアクセスできる、あらかじめ定義されたフィールド、演算子、および関数が用意されています。 要素をクリックすると、条件エディタに追加されます。 これらの関数はブール値を返します。 提供されている演算子と関数の完全なリストについては、 式ビルダー検証リファレンス を参照してください。

重要

式ビルダーの検証機能は、テキスト、数値、日付、ブール値のフィールドタイプでのみ使用できます。

サイドパネルを使用して、フィールド、演算子、および関数要素を検証に追加します。

Liferayは、「保存」をクリックしたときに、式の構文が有効かどうかをチェックします。 式が無効な場合、Liferayはエラーメッセージを表示します。

式ビルダー演算子

この表は、式ビルダーの検証に使用できる演算子の一覧です。

演算子説明
And ( AND )依存した関係を表すのに使用される等位接続詞
Divided By ( / )除算の数学演算子
Minus ( - )除算の数学演算子
Or ( OR )独立した関連を表すのに使用される等位接続詞
Plus ( + )加算の数学演算子
Multiply ( * )乗算の数学演算子

式構築関数

この表は、使用可能な式ビルダー関数と、それらに対応するフィールドタイプを示しています。

演算子テキストフィールド数値フィールド日付フィールド説明
日付を比較 ✔日付フィールドの値が設定値と同じかどうかを確認します。
連結✔ 複数の文字列またはテキストフィールドを結合し、他の検証関数で使用できる単一の文字列を返します。
条件✔✔✔ユーザー入力が1つ以上の条件を満たしているかどうかを確認し、ブール値を返します。
が以下を含む✔✔ 指定された値を含むフィールドがあるかどうかを確認し、ブール値を返します。
含まない✔✔ 指定された値を含むフィールドが存在しないかどうかを確認し、ブール値を返します。
未来の日付 ✔日付フィールドの値が未来の日付かどうかをチェックし、ブール値を返します。
URL である✔ テキストフィールドがURLかどうかをチェックし、ブール値を返します。
メールアドレスである✔ テキストフィールドがメールアドレスかどうかをチェックし、ブール値を返します。
小数である ✔ 数値フィールドが小数かどうかをチェックし、ブール値を返します。
が空の場合✔ テキストフィールドが空かどうかをチェックし、ブール値を返します。
が以下と等しい✔✔ フィールド値が指定された値と等しいかどうかをチェックし、ブール値を返します。
以上 ✔ 数値フィールドが特定の数値より大きいかどうかをチェックし、ブール値を返します。
以上もしくは等しい ✔ 数値フィールドが特定の数値以上であるかどうかをチェックし、ブール値を返します。
整数である ✔ 数値フィールドが整数かどうかをチェックし、ブール値を返します。
以下 ✔ 数値フィールドが特定の数値より小さいかどうかをチェックし、ブール値を返します。
以下もしくは等しい ✔ 数値フィールドが特定の数値以下かどうかをチェックし、ブール値を返します。
等しくない✔✔ フィールド値が指定された値と異なるかどうかをチェックし、ブール値を返します。
一致✔ テキストフィールドが特定の文字列値または正規表現に一致するかどうかをチェックし、ブール値を返します。
旧価値✔✔✔指定されたフィールドの以前の値を取得します。
過去の日付 ✔日付フィールドの値が過去の日付かどうかをチェックし、ブール値を返します。
範囲 ✔日付範囲が過去の日付で始まり、未来の日付で終わるかどうかをチェックし、ブール値を返します。
和 ✔ 複数の数値フィールドを合計し、他の検証関数で使用できる単一の数値を返します。

詳細と例については、 式ビルダー検証リファレンス を参照してください。

利用可能なフィールドのリファレンス

条件を作成する際には、オブジェクトのカスタムフィールドまたはシステムフィールドのいずれも使用できます。 Liferay DXP 2025.Q2以降では、一対多のリレーションシップの子側のリレーションシップフィールドから選択することもできます。

以下は、カスタムオブジェクトで使用可能なすべてのデフォルトフィールドです。

項目説明
会社IDエントリーが作成されたポータルインスタンス
作成日エントリーが作成された日時
現在の日付応募書類が提出された日付
現在のユーザーIDエントリーを送信したユーザーのID
外部参照コードエントリの外部参照コード
グループIDエントリが作成されたサイトID
最終公開日記事が最後に公開された日付
変更日エントリが最後に更新された日付
MVCCバージョンMVCC版のエントリ
オブジェクト定義IDエントリのオブジェクトのID
オブジェクトエントリIDエントリーのID
状態エントリのワークフローステータス
statusByUserIdワークフローで割り当てられたユーザーのID
ユーザー名によるステータスワークフローで割り当てられたユーザーの名前
ステータス日付ワークフローのステータスが最後に更新された日付
ユーザーIDエントリの作成者のID
ユーザー名エントリの作成者のユーザー名
UUID入場用の固有のユニバーサルID

システムオブジェクトには独自のデフォルトフィールドがありますが、上記の表と一部重複する部分があります。

複合キー検証の使用

Liferay DXP 2024.Q1+/GA112+ (リリース機能フラグ)

Liferay DXP 2024.Q3+/Portal GA125+(一般提供開始)

お使いのLiferayのバージョンで必要な場合は、まず複合キー検証のリリース機能フラグを有効にしてください。 グローバルメニュー (Global Menu) → コントロールパネル → インスタンス設定 → 機能フラグ に移動します。 リリース セクションを開き、 フィールド検証の改善 (LPS-187854) を有効にします。

一部のデータモデルやアプリケーションでは、固有の複合キーが必要となります。 例えば、注文オブジェクトでは、顧客IDと注文日の組み合わせがシステム内で一意であることを要求できます。 一度適用されると、この複合キーを使用して固有の注文エントリを検索および操作できるようになります。 一意の複合キー検証は、オブジェクトのスコープ内でフィールドの組み合わせが一意であることを保証します。 サイトスコープのオブジェクトはサイト内で一意の複合キーを持つことができますが、インスタンススコープのオブジェクトはインスタンス全体で一意の複合キーを持つことができます。

複合キーでは、テキスト型、整数型、選択リスト型のフィールドを使用できます。 一対多のリレーションシップの子側でも、リレーションシップフィールドを使用できます。

複合キーでは、リレーションシップフィールドを使用できます。

既にデータが存在する複合キーには、フィールドを追加することはできません。

公開データを含むフィールドは、複合キーには使用できません。

特定の操作はドラフトオブジェクトでのみサポートされます。

アクションオブジェクトステータスサポート対象
検証を削除する下書き

公開済み
✔

✔
検証からフィールドを削除する下書き

公開済み
✔

✘
検証に使用されているフィールドを削除します下書き

公開済み
✘

✘

API を使用した検証ルールの実行

Liferay DXP 2025.Q2+

既製のトリガーイベントが 1 つあります: 送信時。 これがユースケースを満たさない場合は、カスタムオブジェクトの 検証 API エンドポイントを使用して検証をトリガーすることを検討してください。 例えば、 のような複数ステップのフォーム では、次のページに移行する前に各ページを検証したい場合があります。 オブジェクトエントリをPOSTする権限を持つユーザーは、その検証エンドポイントを呼び出すこともできます。

検証エンドポイントを使用するには、リクエストボディにトリガーする検証ルールの外部参照コード(ERC)を渡します。検証ルールのERCを渡さない場合は、すべての検証ルールがトリガーされます。 さらに、検証するフィールド名と値をリクエストボディに含めてください。 この例では、単一の検証ルールERCを使用して2つの日付が渡されます。 この検証ルールは、 startDate フィールドの値が、 endDate の値よりも常に前であることを保証します。

curl \
   "http://localhost:8080/o/c/timeoffrequests/validate" \
   --data-raw '
      {
         "objectValidationRuleExternalReferenceCodes": ["{validationRuleERC}"],
         "値": {
            "endDate": "2025-06-01",
            "startDate": "2025-06-08"
         }
      }' \
   --header "Content-Type: application/json" \
   --request "POST" \
   --user "test@liferay.com:learn"

オブジェクト定義内の検証ルールの ERC に {validationRuleERC} を置き換えます。

オブジェクト定義の検証ルールERCを検索するには、オブジェクト管理APIを使用します。 例えば、オブジェクト定義のERCが C_TIMEOFFREQUESTの場合、次のGETリクエストを実行できます。

curl \
   "http://localhost:8080/o/object-admin/v1.0/object-definitions/by-external-reference-code/C_TIMEOFFREQUEST/object-validation-rules" \
   --user "test@liferay.com:learn"
注記

基本認証はデモンストレーション目的で使用されます。 本番環境では、 OAuth2 を介してユーザーを認証する必要があります。 OAuth2 を使用する React アプリケーションの例については、 OAuth2 を使用してユーザーを認証する を参照してください。