RESTデータプロバイダーを使用してフォームオプションを入力する
[リストから選択]フィールドには、多くのオプションを含めることができます。 これらのオプションは、Liferay DXP またはその他のサードパーティの REST Web サービスに登録されている JSON Web サービスを使用して自動的に提供できます。 データ プロバイダー全般の詳細については、 データ プロバイダーを参照してください。 REST データ プロバイダーをフォームに適用するには、JSON Web サービスを呼び出し、そこからデータを取得するようにデータ プロバイダーを構成し、フォームでデータ プロバイダーを使用する方法を学習します。
REST データ プロバイダーを使用して、 テキスト フィールドを自動補完することもできます。
前提条件
一般的なニーズは、[選択]フィールドにオプションのリストを入力することです。たとえば、フォームで個人情報を収集する場合は、ユーザーの国が必要です。
-
「 Country」という単一選択フィールドを含むフォーム を作成します。
-
次に、
get-countriesJSON Web サービスを使用します (—2 つあるので、いずれか 1 つを使用します)。- Liferay をローカルで実行している場合は、 http://localhost:8080/api/jsonwsに移動します。
- 「get-countries]と検索します。

- [呼び出し] をクリックします。
これで、国のリストが使用可能になりました。
ローカルネットワーク上のデータへのアクセスを有効にする
デフォルトでは、ユーザーはデータプロバイダーがローカルネットワーク上のURLを使用するように設定することはできません。 このデフォルト設定は本番環境におけるセキュリティにとっては適切ですが、テストがしずらくなります。
データプロバイダーからローカルネットワークへのアクセスを有効にするには:
-
コントロール パネル → 構成 → システム設定に移動します。
-
[コンテンツ & データ]の下にある[データプロバイダー]をクリックします。
-
[ローカルネットワークへのアクセス]チェックボックスにチェックを入れます。

-
完了したら、 「保存」 をクリックします。
基本的なRESTデータプロバイダーの追加
Countries of the Worldデータプロバイダーを追加するには:
-
製品メニュー (
) を開き、 サイト管理 メニューのコンパスアイコン (
) をクリックします。 -
フォームを作成するサイトを選択します。
-
コンテンツ & データ → フォームをクリックします。
-
データ プロバイダー タブをクリックします。
![[データプロバイダー]タブに移動します。](https://resources.learn.liferay.com/images/dxp/latest/en/low-code/forms/data-providers/using-the-rest-data-provider-to-populate-form-options/images/03.png)
-
追加 (
) をクリックし、REST データ プロバイダーを追加します。 -
このデータを入力してください:
- 名前: 世界の国々
- URL:
http://localhost:8080/api/jsonws/country/get-countries/ - ユーザー名:
adminuser@liferay.com - パスワード: adminuserpass
- タイムアウト: 1000
- 出力ラベル: 国名
- 出力パス:
$..nameCurrentValue - 出力タイプ: リスト

-
完了したら、 「保存」 をクリックします。
$.. before nameCurrentValue は、JSON データ構造をナビゲートし、出力へのパスを指定するための JsonPath 構文です。 JsonPath と の詳細については、こちらをご覧ください。
RESTデータプロバイダーのフィルターとしての入力の使用
上記の例では、単一の出力のみを使用して、 リストから選択フィールドに入力します。 REST プロバイダーからの応答をフィルターするには、入力フィールドを使用します。
この例では、別のデータ プロバイダーを使用し、世界の国々に地域 (たとえば、アメリカ、ヨーロッパ、オセアニア) フィルターを適用します。
-
このデータを入力してください:
- 名前:
その他の国 - URL:
https://restcountries.com/v3.1/region/{region}?fields=name - 入力パラメータ: 地域
- 入力タイプ: テキスト
- 入力ラベル: 地域
- 出力パス:
$..name.common - 出力タイプ: リスト
- 出力ラベル: 国名
これらの値の詳細については、 データ プロバイダーを参照してください。
- 名前:
この例では入力パラメータを使用しているため、API 呼び出しが適切に解決されるように、データ プロバイダーに入力を提供する必要があります。 テキスト フィールドの値を入力としてデータ プロバイダーに送信する自動入力ルールを設定できます。 例については、 自動入力ルール のドキュメントを参照してください。
データプロバイダーへの権限付与
データ プロバイダーが提供するオプションを表示するには、ユーザーはデータ プロバイダーの表示権限を持っている必要があります。 たとえば、ゲストがフォームに記入する必要がある場合は、表示権限を付与します。
データプロバイダーの権限を設定するには:
-
サイト管理 → コンテンツ & データ → フォームに移動します。
-
[データプロバイダー]タブをクリックします。
-
[アクション] (
) をクリックし、データ プロバイダーの横にある [権限] をクリックします。
-
必要な権限を付与します。
-
完了したら、 「保存」 をクリックします。
選択フィールドでのデータプロバイダーを使用する
データプロバイダーを設定したら、それを使用して[リストから選択]フィールドを入力します。
-
コンテンツ & データ → フォームをクリックします。
-
[リストから選択]フィールドをフォームにドラッグします。
-
リストの作成ドロップダウンメニューから データプロバイダーから を選択します。
-
「データプロバイダーの選択」ドロップダウン メニューから 世界の国々 を選択します。
-
「出力パラメータの選択」ドロップダウンメニューから 国名 を選択します。
![[リストから選択]フィールドのデータプロバイダーの値を設定します。](https://resources.learn.liferay.com/images/dxp/latest/en/low-code/forms/data-providers/using-the-rest-data-provider-to-populate-form-options/images/06.png)
-
完了したら、 「フォームを保存」 をクリックします。
データプロバイダは、正しい権限を持ってフォームにアクセスしているユーザに対して、セレクトフィールドを生成するようになりました。

データプロバイダーのエラーのトラブルシューティング
データ プロバイダーの障害によって発生するエラーを発見するには、 これらのサービスのログ レベル を構成します。
-
コントロール パネル → システム → サーバー管理に移動します。
-
ログ レベル タブをクリックします。
-
ロギングカテゴリ
com.liferay.dynamic.data.mapping.data.provider.internal.DDMDataProviderInvokerImplを追加し、 WARN レベルでログを記録するように設定します。 完了したら保存します 。 -
ロギングカテゴリ
com.liferay.dynamic.data.mapping.form.field.type.internal.DDMFormFieldOptionsFactoryImplを追加し、 WARN レベルでログを記録するように設定します。 完了したら保存します 。
データプロバイダーでエラーが発生した場合、コンソールが警告メッセージを送信するようになりました。