RESTデータプロバイダーを使用してフォームオプションを入力する¶
[リストから選択] フィールドには、多くのオプションを含めることができます。 これらのオプションは、Liferay DXPに登録されているJSON Web サービスや、その他のサードパーティーのREST Webサービスを使用して、自動的に提供することができます。 データプロバイダーの一般的な説明については、データプロバイダーの概要を参照してください。 RESTデータプロバイダーをフォームに適用するために、JSONウェブサービスを呼び出し、そこからデータを引き出すようにデータプロバイダーを設定し、フォームでデータプロバイダーを使用する方法を学びます。
前提条件¶
一般的なニーズは、[選択]フィールドにオプションのリストを入力することです。たとえば、フォームで個人情報を収集する場合は、ユーザーの国が必要です。
国 という 単一選択フィールドを含むフォームを作成します。
次に、
get-countries
JSON Web サービスを使用します(2つありますが、どちらか一方を使用してください)。ローカルでLiferayを動かしている場合は、 http://localhost:8080/api/jsonwsに移動してください。
「get-countries」と検索します。
[Invoke] をクリックします。
これで、国のリストが使用可能になりました。
ローカルネットワーク上のデータへのアクセスを有効にする¶
デフォルトでは、ユーザーはデータプロバイダーがローカルネットワーク上のURLを使用するように設定することはできません。 このデフォルト設定は本番環境におけるセキュリティにとっては適切ですが、テストがしずらくなります。
データプロバイダーからローカルネットワークへのアクセスを有効にするには:
[コントロールパネル] → [設定] → [システム設定]に移動します。
[コンテンツ & データ]の下にある [データプロバイダー] をクリックします。
[ローカルネットワークへのアクセス] チェックボックスにチェックを入れます。
完了したら、 [Save] をクリックします。
基本的なRESTデータプロバイダーの追加¶
Countries of the World データプロバイダーを追加するには:
プロダクトメニュー(
)を開き、 [サイト管理] メニューのコンパスアイコン(
)をクリックします。
フォームを作成するサイトを選択します。
[コンテンツ & データ] → [フォーム] をクリックします。
[データプロバイダー] タブをクリックします。
追加ボタン(
)をクリックし、RESTデータ・プロバイダーを追加します。
このデータを入力してください:
名前 : Countries of the World
URL :
http://localhost:8080/api/jsonws/country/get-countries/
ユーザー名 :
adminuser@liferay.com
パスワード : adminuserpass
タイムアウト : 1000
出力のラベル : Country Name
出力パス :
$..nameCurrentValue
Outputs Type : List
完了したら、 [Save] をクリックします。
RESTデータプロバイダーのフィルターとしての入力の使用¶
上記の例では、 Select from List フィールド に入力するために、単一の出力のみを使用しています。 RESTプロバイダーからの応答は、リストから選択フィールドに表示する前にフィルタリングする必要がある場合があります。 そのためには、データプロバイダーの [Input] フィールドが必要です。
例えば、世界の国々に地域(アメリカ、ヨーロッパ、オセアニアなど)のフィルターを適用するとします。
このデータを入力してください:
名前 :
restcountries
URL :
https://restcountries.com/v3.1/region/{region}?fields=name
(別のRESTプロバイダを使用)入力ラベル : Region
Parameter : 地域
インプットタイプ : Text
Outputs Label : Country Name
出力パス :
$..name.common
出力タイプ : List
これらの値の詳細については、 データプロバイダーの概要参照してください。
この例では入力パラメータを使用しているため、API 呼び出しが正しく解決されるように、データプロバイダに入力を提供する必要があります。 テキストフィールドの値を入力としてデータプロバイダーに送信するオートフィルルルールを設定することができます。 例については、 Autofill Rule のドキュメントを参照してください。
データプロバイダーへの権限付与¶
フォームに入力する前にユーザーの認証が必要かどうかによって、ユーザーはデータプロバイダーに追加の権限を付与する必要があります。 例えば、ゲストがフォームに記入する場合、ゲストには 表示 権限が必要で、その権限がないと、データプロバイダーが提供するオプションを確認できません。
データプロバイダーの権限を設定するには:
[サイト管理] → [コンテンツ & データ] → [フォーム] に移動します。
[データプロバイダー]タブをクリックします。
アクションボタン(
)をクリックし、データプロバイダーの横にある [権限設定] をクリックします。
必要な権限を付与します。
完了したら、 [保存] をクリックします。
選択フィールドでのデータプロバイダーを使用する¶
データプロバイダーを設定したら、それを使用して[リストから選択]フィールドを入力します。
[コンテンツ & データ] → [フォーム] をクリックします。
[リストから選択] フィールドをフォームにドラッグします。
[リストを作成]ドロップダウンメニューから [データプロバイダーから] を選択します。
[データプロバイダーを選択]ドロップダウンメニューから [Countries of the World] を選択します。
[出力パラメータの選択]ドロップダウンメニューから [Country Name] を選択します。
完了したら、[フォームを保存]クリックします。
データプロバイダは、正しい権限を持ってフォームにアクセスしているユーザに対して、セレクトフィールドを生成するようになりました。
データプロバイダーのエラーのトラブルシューティング¶
データプロバイダーの障害によるエラーを発見するには、これらのサービスに対してログレベルを設定します。
コントロールパネル → システム → サーバ管理 へ行きます。
[ログレベル] タブをクリックします。
ロギングカテゴリ
com.liferay.dynamic.data.mapping.data.provider.internal.DDMDataProviderInvokerImpl
を追加し、 WARN レベルでログを記録するように設定します。 完了したら 保存 します。ロギングカテゴリ
com.liferay.dynamic.data.mapping.form.field.type.internal.DDMFormFieldOptionsFactoryImpl
を追加し、 WARN レベルでログを記録するように設定します。 完了したら 保存 します。
データプロバイダーでエラーが発生した場合、コンソールが警告メッセージを送信するようになりました。