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

ポートレットレベルの構成

構成フレームワークを使用すると、 アプリケーションの構成をさまざまなレベルのスコープに設定できます。 インスタンススコープおよびサイトスコープの構成がConfigurationProviderを使用する場合、以下の例に示すように、ポートレットスコープの構成はPortletDisplayを使用します。

構成フレームワークをポートレットのルック&フィールと組み合わせて使用できるため、アプリには、システム設定の構成UIと、ポートレットのセットアップタブのプリファレンスUIの両方を設定できます。

ポートレットのルック&フィールがユーザーによって実装および設定されている場合、アプリケーションの構成はオーバーライドされることに注意してください。 詳細については、 ポートレット設定 を参照してください。

サンプルコードを参照する

新しい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-x7y2.zip -O
    
    unzip liferay-x7y2.zip
    
  2. モジュールのルートから、ビルドおよびデプロイします。

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

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

  3. Liferay Dockerコンテナコンソールでデプロイを確認します。

    STARTED com.acme.x7y2.web_1.0.0 [1651]
    
  4. サンプルのモジュールが機能していることを確認します。 ブラウザでhttps://localhost:8080を開きます。

  5. X7Y2ポートレットをページにデプロイします。 サンプルポートレットは、サンプルウィジェットの下にあります。 デフォルトの色が緑に設定されていることに注意してください。

  6. コントロール パネル構成システム設定に移動します。 [Other]セクションの下部にあるX7Y2構成をクリックします。

    システム設定でアプリケーションの構成に移動します。

    別のデフォルトの色を選択して保存します。 ウィジェットがデプロイされているページに戻ります。 色変数が更新されました。

  7. ウィジェット ヘッダーのポートレットのオプション アイコン (Widget Options icon) をクリックし、 [構成]をクリックします。 ポートレットの設定ウィンドウが開きます。

    構成をクリックして、ポートレットの設定を開きます

    Liferay DXP 2025.Q1/Portal GA132 より前では、設定オプションはウィジェットの右上隅に表示されていました。

    別の色を選択して保存します。 ウィンドウを閉じると、ポートレット設定が表示されます。 ポートレットの設定が選択された後、システム設定で設定されたアプリケーション設定は表示されなくなることに注意してください。

アプリケーションの構成がポートレット設定とどのように連携するかを調べてみましょう。

構成インターフェースを作成する

まず、システム設定で構成UIを自動生成する構成インターフェースファイルを作成します。

@ExtendedObjectClassDefinition(
	category = "x7y2",
	scope = ExtendedObjectClassDefinition.Scope.PORTLET_INSTANCE
)
@Meta.OCD(
	id = "com.acme.x7y2.web.internal.configuration.X7Y2PortletInstanceConfiguration",
	name = "X7Y2 Portlet"
)
public interface X7Y2PortletInstanceConfiguration {

	@Meta.AD(
		deflt = "green", name = "color",
		optionLabels = {"Green", "Orange", "Purple"},
		optionValues = {"green", "orange", "purple"}, required = false
	)
	public String color();

}

この例では、スコープはPORTLET_INSTANCEに設定されています。 インターフェースは、ドロップダウンリストで使用可能な構成オプションも定義します。

この例は、より高いレベルに設定されたスコープでも機能することに注意してください(つまり、 サイト、インスタンス、システムスコープ)。 ベストプラクティスは、ポートレット設定で使用する予定のアプリケーションをポートレットスコープとしてマークすることです。

詳細については、 構成インターフェースの作成を参照してください。

DXP 7.4 U51 または Portal 7.4 GA51 より前の Liferay バージョンでは、 ConfigurationBeanDeclaration が必要です。 以前のバージョンの Liferay での ConfigurationBeanDeclarationを参照してください。

PortletDisplayで構成を読み取る

構成プロバイダー APIから構成値を読み取るのと同様に、ポートレット表示 API を使用してアプリケーション内の構成値にアクセスできます。

@Component(
	configurationPid = "com.acme.x7y2.web.internal.configuration.X7Y2PortletInstanceConfiguration",
	property = {
		"com.liferay.portlet.display-category=category.sample",
		"javax.portlet.display-name=X7Y2 Portlet",
		"javax.portlet.init-param.config-template=/configuration.jsp",
		"javax.portlet.init-param.view-template=/view.jsp",
		"javax.portlet.name=com_acme_x7y2_web_internal_portlet_X7Y2Portlet"
	},
	service = Portlet.class
)
public class X7Y2Portlet extends MVCPortlet {

	@Override
	public void render(
			RenderRequest renderRequest, RenderResponse renderResponse)
		throws IOException, PortletException {

		renderRequest.setAttribute(
			X7Y2PortletInstanceConfiguration.class.getName(),
			_getX7Y2PortletInstanceConfiguration(renderRequest));

		super.render(renderRequest, renderResponse);
	}

	private X7Y2PortletInstanceConfiguration
			_getX7Y2PortletInstanceConfiguration(RenderRequest renderRequest)
		throws PortletException {

		ThemeDisplay themeDisplay = (ThemeDisplay)renderRequest.getAttribute(
			WebKeys.THEME_DISPLAY);

		try {
			return _configurationProvider.getPortletInstanceConfiguration(
				X7Y2PortletInstanceConfiguration.class, themeDisplay);
		}
		catch (ConfigurationException configurationException) {
			throw new PortletException(configurationException);
		}
	}

	@Reference
	private ConfigurationProvider _configurationProvider;

}

X7Y2PortletInstanceConfigurationメソッドは、PortletDisplayを使用してポートレットインスタンス設定を取得します。 render()メソッドは、JSPファイルの要求から読み取ることができるように、構成をリクエストオブジェクトに追加します。

ポートレットのルック&フィールを設定する

ポートレットにポートレットのルック&フィールを設定するには、構成JSPファイルと構成アクションもアプリケーションに追加する必要があります。 これらのファイルがポートレット内でどのように機能するかの詳細については、「 ポートレット設定」を参照してください。