構成の設定とアクセス
Liferayの構成フレームワークを使用して、MVCポートレットの設定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に変更します。
次に、以下の手順に従います。
-
設定とアクセスの構成をダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-n2f3.zip -Ounzip liferay-n2f3.zip -
モジュールのルートから、ビルドおよびデプロイします。
./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)注このコマンドは、デプロイされたjarをDockerコンテナ上の
/opt/liferay/osgi/modulesにコピーするのと同じです。 -
Liferay Dockerコンテナコンソールでデプロイを確認します。
STARTED com.acme.n2f3.web.0.0 [1650] -
サンプルのモジュールが機能していることを確認します。 ブラウザで
https://localhost:8080を開きます。 -
N2F3ポートレットをページに追加します。 サンプルポートレットは、サンプルウィジェットの下にあります。

UIには、フォントの色、フォントファミリー、フォントサイズの3つの設定可能な属性とともにウェルカムメッセージが表示されます。
-
設定を変更するには、 コントロール パネル → 構成 → システム設定に移動します。 [Other]の下のcategory.n2f3をクリックします。
![[Other]カテゴリーの下にあるcategory.n2f3をクリックします。](https://resources.learn.liferay.com/images/dxp/latest/en/development/traditional-java-based-development/core-frameworks/configuration-framework/setting-and-accessing-configurations/images/02.png)
別のフォントの色、フォントファミリー、およびフォントサイズを入力してみてください。 [アップデート]ボタンをクリックして、公開されたウィジェットのあるページに戻ります。 属性が変更されたことを確認します。
構成フレームワークの仕組みは次のとおりです。
構成インターフェイスを作成する
構成インターフェースで構成可能な属性を定義するだけで、 システム設定で構成 UI を生成できます。
サンプルプロジェクトでは、N2F3WebConfiguration.javaファイルが構成インターフェースです。
@ExtendedObjectClassDefinition(
category = "n2f3", scope = ExtendedObjectClassDefinition.Scope.COMPANY
)
@Meta.OCD(
id = "com.acme.n2f3.web.internal.configuration.N2F3WebConfiguration",
localization = "content/Language", name = "n2f3-configuration-name"
)
public interface N2F3WebConfiguration {
@Meta.AD(deflt = "blue", required = false)
public String fontColor();
@Meta.AD(deflt = "serif", required = false)
public String fontFamily();
@Meta.AD(deflt = "16", required = false)
public int fontSize();
}
このサンプルインターフェイスでは、スコープがScope.COMPANYに設定されていることに注意してください。 詳細については、 スコープ設定 を参照してください。
インターフェースには、フォントの色、フォントファミリー、フォントサイズの3つの設定可能な属性があります。 色とファミリーはstring型であり、サイズはint型であることに注意してください。
Meta.OCDは、このクラスを特定のIDを持つ構成として登録します。
IDには、構成インターフェイスの完全修飾クラス名(FQCN)を指定する必要があることに注意してください。
Meta.AD は、デフォルト値や属性が必須フィールドであるかどうかなど、属性に関する オプションのメタデータ を指定します。 属性値が必要であるがデフォルトが設定されていない場合、管理者はアプリケーションが正しく機能するように設定で値を設定する必要があることに注意してください。
Liferay DXP 2025.Q1/Portal GA132 より前では、 required フィールドを trueに設定するには、 ConfigurableUtilを使用して設定を取得する必要があります。 以下に例を示します。
@Activate
@Modified
protected void activate(Map<Object, Object> properties) {
_n2f3WebConfiguration = ConfigurableUtil.createConfigurable(
N2F3WebConfiguration.class, properties);
}
次に、MVCポートレットによって構成がどのように読み取られるかを確認します。
アプリケーションから構成を読み取る
-
@Componentアノテーションでは、構成インターフェイスクラスはconfigurationPidで指定されます。configurationPid = "com.acme.n2f3.web.internal.configuration.N2F3WebConfiguration" -
構成にアクセスするために、
render()メソッドはConfigurationProviderを利用します。 構成プロバイダーAPIは、さまざまなレベルのスコープで構成を取得するためのメソッドを提供します。 サンプルプロジェクトの構成はインスタンススコープであり、getCompanyConfiguration()メソッドを使用して構成を取得します。
try {
renderRequest.setAttribute(
N2F3WebConfiguration.class.getName(),
_configurationProvider.getCompanyConfiguration(
N2F3WebConfiguration.class,
_portal.getCompanyId(renderRequest)));
}
構成オブジェクトがリクエストオブジェクトに追加され、アプリケーションのJSPのリクエストから読み取ることができるようになりました。
JSPから構成にアクセスする
-
次のimportステートメントは、構成インターフェイスをJSPに追加します。
<%@ page import="com.acme.n2f3.web.internal.configuration.N2F3WebConfiguration" %> -
リクエストオブジェクトから構成オブジェクトが取得され、構成値が読み取られます。
<% N2F3WebConfiguration n2f3WebConfiguration = (N2F3WebConfiguration)request.getAttribute(N2F3WebConfiguration.class.getName()); %> -
属性
fontColor()、fontFamily()、fontSize()をJSPで使用できるようになりました。
ドロップダウン選択UIの実装
サンプルプロジェクトには、構成可能な3つの属性があります。 現在、属性はテキスト入力フィールドに手動で入力する必要がありますが、これはさらにカスタマイズできます。
たとえば、入力フィールドの代わりに、フォント ファミリ属性のドロップダウン リストを使用できます。 プロジェクトの構成インターフェイスで、@Meta.ADアノテーションを次のように置き換えます。
@Meta.AD(
optionLabels = {"Arial", "Georgia", "Helvetica", "Tahoma", "Verdana"},
optionValues = {"arial", "georgia", "helvetica", "tahoma", "verdana"},
required = false)
サンプルモジュールを再デプロイします。

これで、フォントファミリー属性はドロップダウン選択になります。
Liferayの以前のバージョンでのConfigurationBeanDeclaration
Liferay DXP 7.4 U51+ および Liferay Portal 7.4 GA51+ の場合、 ConfigurationBeanDeclaration クラスは必要ありません。 構成インターフェースは、構成プロバイダーAPIに自動的に登録されます。
7.4 Update/GA 51以前のLiferayバージョンでは、構成クラスを構成プロバイダーAPIで使用するためにはConfigurationBeanDeclarationで構成クラスを登録する必要があります。 ConfigurationBeanDeclaration クラスには、構成インターフェースクラスを返すメソッドが1つあります。 これにより、システムは構成の変更が生じたときにそれを追跡できるようになります。 例えば、N2F3ポートレットの場合、以下のようなクラスを作成します。
@Component(service = ConfigurationBeanDeclaration.class)
public class N2F3WebConfigurationBeanDeclaration
implements ConfigurationBeanDeclaration {
@Override
public Class<?> getConfigurationBeanClass() {
return N2F3WebConfiguration.class;
}
}
この例では、クラスをcom.acme.n2f3.web.internal.settings.definitionパッケージに配置します。