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

フィールドオプションプロバイダー

設定インターフェイスの @Meta.AD アノテーションで、 ドロップダウン リストを手動で 設定できます。ただし、ConfigurationFieldOptionsProviderクラスを使用して、オプションのラベルと値を自動的に入力することもできます。これは、ドロップダウンリストに動的にデータを入力する場合に役立ちます。たとえば、Webサービスからオブジェクトのリストをフェッチしたり、データベースを反復処理してドロップダウンリストに動的にデータを入力したりできます。

チュートリアルコードをデプロイする

Liferay の新しいインスタンスを起動するには、次のコマンドを実行します。

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132

http://localhost:8080 で Liferay にサインインしてください。メールアドレス test@liferay.com とパスワード test を使用してください。プロンプトが表示されたら、パスワードを learn に変更してください。

次に、以下の手順に従ってください。

  1. フィールドオプションプロバイダー をダウンロードして解凍します。

    curl https://resources.learn.liferay.com/examples/liferay-z4h3.zip -O
    
    unzip liferay-z4h3.zip
    
  2. モジュールのルートディレクトリから、ビルドとデプロイを実行します。

    ./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
    
    注記

    このコマンドは、デプロイされた jar ファイルを Docker コンテナの /opt/liferay/osgi/modules にコピーすることと同じです。

  3. Liferay Dockerコンテナコンソールでデプロイメントを確認してください。

    STARTED com.acme.z4h3.impl_1.0.0 [1150]
    
  4. ブラウザで https://localhost:8080 を開き、 グローバル メニュー (Global Menu) → コントロール パネル → システム設定 に移動します。サードパーティ をクリックしてください。左側の Z4H3 設定 をクリックします。

    設定画面には2つのドロップダウンリストが表示されます。

最初のドロップダウンリストには、 @Meta.AD アノテーションが手動で入力されます。 2番目のドロップダウンリストには、フィールドオプションプロバイダーが表示されます。

設定インターフェースの設定

設定インターフェース を作成し、設定フィールド名を設定します。

@Meta.AD(
	description = "this-list-is-manually-populated", name = "colors",
	optionLabels = {"blue", "red", "yellow"},
	optionValues = {"blue", "red", "yellow"}, required = false
)
public String colors();

@Meta.AD(
	description = "this-list-is-provider-populated",
	name = "provider-populated-colors", required = false
)
public String providerPopulatedColors();

サンプルプロジェクトでは、 providerPopulatedColors は、値を設定する構成フィールド名です。

フィールドオプションプロバイダを実装する

ConfigurationFieldOptionsProvider クラスを実装する新しいクラスを作成します。

@Component(
	property = {
		"configuration.field.name=providerPopulatedColors",
		"configuration.pid=com.acme.z4h3.internal.configuration.Z4H3Configuration"
	},
	service = ConfigurationFieldOptionsProvider.class
)

サービスを登録するには、 @Component アノテーションを使用します。前のステップの configuration.field.name を含めます。 configuration.pid を構成インターフェイスの完全修飾クラス名に設定します。

public List<Option> getOptions() {
	return Arrays.asList(
		_getOption("green"), _getOption("orange"), _getOption("purple"));
}

private Option _getOption(String color) {
	return new Option() {

		@Override
		public String getLabel(Locale locale) {
			ResourceBundle resourceBundle = ResourceBundleUtil.getBundle(
				"content.Language", locale, getClass());

			return LanguageUtil.get(resourceBundle, color);
		}

		@Override
		public String getValue() {
			return color;
		}

	};
}

getOptions メソッドを追加して、 Optionのリストを返します。サンプル プロジェクトには、 optionValue を色の文字列として設定し、 optionLabel をその色の Language.properties ファイルに格納されている文字列として設定する配列が含まれています。

このチュートリアルコードでは、文字列配列の簡単な例を使用していますが、より複雑な使用例も可能です。

EnabledClassNamesConfigurationFieldOptionsProvider.java で実際の Liferay の例をご覧ください。このコードは、 AssetRendererFactory オブジェクトのリストを取得し、リストを反復処理して、アセットのタイプ名をラベルとして、クラス名を値として使用して、 Optionの新しいリストを作成します。