Documentation

RESTデータプロバイダーを使用してフォームオプションを入力する

リストから選択] フィールドには、多くのオプションを含めることができます。 これらのオプションは、Liferay DXPに登録されているJSON Web サービスや、その他のサードパーティーのREST Webサービスを使用して、自動的に提供することができます。 データプロバイダーの一般的な説明については、データプロバイダーの概要を参照してください。 RESTデータプロバイダーをフォームに適用するために、JSONウェブサービスを呼び出し、そこからデータを引き出すようにデータプロバイダーを設定し、フォームでデータプロバイダーを使用する方法を学びます。

前提条件

一般的なニーズは、[選択]フィールドにオプションのリストを入力することです。たとえば、フォームで個人情報を収集する場合は、ユーザーの国が必要です。

  1. という 単一選択フィールドを含むフォームを作成します

  2. 次に、get-countries JSON Web サービスを使用します(2つありますが、どちらか一方を使用してください)。

    • ローカルでLiferayを動かしている場合は、 http://localhost:8080/api/jsonwsに移動してください。

    • 「get-countries」と検索します。

    get-countries Webサービスを検索します。

    • Invoke] をクリックします。

これで、国のリストが使用可能になりました。

ローカルネットワーク上のデータへのアクセスを有効にする

デフォルトでは、ユーザーはデータプロバイダーがローカルネットワーク上のURLを使用するように設定することはできません。 このデフォルト設定は本番環境におけるセキュリティにとっては適切ですが、テストがしずらくなります。

データプロバイダーからローカルネットワークへのアクセスを有効にするには:

  1. コントロールパネル] → [設定] → [システム設定]に移動します。

  2. [コンテンツ & データ]の下にある [データプロバイダー] をクリックします。

  3. ローカルネットワークへのアクセス] チェックボックスにチェックを入れます。

    ローカルネットワークへのアクセス権限を付与します。

  4. 完了したら、 [Save] をクリックします。

基本的なRESTデータプロバイダーの追加

Countries of the World データプロバイダーを追加するには:

  1. プロダクトメニューProduct Menu)を開き、 [サイト管理] メニューのコンパスアイコン(Compass)をクリックします。

  2. フォームを作成するサイトを選択します。

  3. コンテンツ & データ] → [フォーム] をクリックします。

  4. データプロバイダー] タブをクリックします。

    [データプロバイダー]タブに移動します。

  5. 追加ボタン(Add)をクリックし、RESTデータ・プロバイダーを追加します。

  6. このデータを入力してください:

    • 名前 : Countries of the World

    • URL : http://localhost:8080/api/jsonws/country/get-countries/

    • ユーザー名 : adminuser@liferay.com

    • パスワード : adminuserpass

    • タイムアウト : 1000

    • 出力のラベル : Country Name

    • 出力パス : $..nameCurrentValue

    • Outputs Type : List

    値を入力します。

  7. 完了したら、 [Save] をクリックします。

注釈

nameCurrentValue の前の $.. は、JSONデータストラクチャーをナビゲートし、出力へのパスを指定するJsonPath構文です。 詳しくは、 JsonPathこちら を参照してください。

RESTデータプロバイダーのフィルターとしての入力の使用

上記の例では、 Select from List フィールド に入力するために、単一の出力のみを使用しています。 RESTプロバイダーからの応答は、リストから選択フィールドに表示する前にフィルタリングする必要がある場合があります。 そのためには、データプロバイダーの [Input] フィールドが必要です。

例えば、世界の国々に地域(アメリカ、ヨーロッパ、オセアニアなど)のフィルターを適用するとします。

  1. このデータを入力してください:

    • 名前 : 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 のドキュメントを参照してください。

データプロバイダーへの権限付与

フォームに入力する前にユーザーの認証が必要かどうかによって、ユーザーはデータプロバイダーに追加の権限を付与する必要があります。 例えば、ゲストがフォームに記入する場合、ゲストには 表示 権限が必要で、その権限がないと、データプロバイダーが提供するオプションを確認できません。

データプロバイダーの権限を設定するには:

  1. サイト管理] → [コンテンツ & データ] → [フォーム] に移動します。

  2. [データプロバイダー]タブをクリックします。

  3. アクションボタン(Actions)をクリックし、データプロバイダーの横にある [権限設定] をクリックします。

    ゲストの表示権限を付与します。

  4. 必要な権限を付与します。

  5. 完了したら、 [保存] をクリックします。

選択フィールドでのデータプロバイダーを使用する

データプロバイダーを設定したら、それを使用して[リストから選択]フィールドを入力します。

  1. コンテンツ & データ] → [フォーム] をクリックします。

  2. リストから選択] フィールドをフォームにドラッグします。

  3. [リストを作成]ドロップダウンメニューから [データプロバイダーから] を選択します。

  4. [データプロバイダーを選択]ドロップダウンメニューから [Countries of the World] を選択します。

  5. [出力パラメータの選択]ドロップダウンメニューから [Country Name] を選択します。

    [リストから選択]フィールドのデータプロバイダーの値を設定します。

  6. 完了したら、[フォームを保存]クリックします。

データプロバイダは、正しい権限を持ってフォームにアクセスしているユーザに対して、セレクトフィールドを生成するようになりました。

フォームのユーザーは、データプロバイダーによって入力されたリストからオプションを選択します。

データプロバイダーのエラーのトラブルシューティング

データプロバイダーの障害によるエラーを発見するには、これらのサービスに対してログレベルを設定します。

  1. コントロールパネルシステムサーバ管理 へ行きます。

  2. ログレベル] タブをクリックします。

  3. ロギングカテゴリ com.liferay.dynamic.data.mapping.data.provider.internal.DDMDataProviderInvokerImpl を追加し、 WARN レベルでログを記録するように設定します。 完了したら 保存 します。

  4. ロギングカテゴリ com.liferay.dynamic.data.mapping.form.field.type.internal.DDMFormFieldOptionsFactoryImpl を追加し、 WARN レベルでログを記録するように設定します。 完了したら 保存 します。

データプロバイダーでエラーが発生した場合、コンソールが警告メッセージを送信するようになりました。