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

設定と構成へのアクセス

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 に変更してください。

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

  1. ダウンロードして解凍します 設定と構成へのアクセス。

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

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

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

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

    STARTED com.acme.n2f3.web.0.0 [1650]
    
  4. サンプルモジュールが正しく動作することを確認してください。ブラウザで https://localhost:8080 を開いてください。

  5. N2F3ポートレットをページに追加します。サンプルポートレットは「サンプルウィジェット」の項目にあります。

    N2F3ポートレットをページに追加します。

    UIには、ウェルカムメッセージとともに、設定可能な3つの属性(フォントの色、フォントの種類、フォントのサイズ)が表示されます。

  6. 設定を変更するには、 グローバルメニュー (Global Menu) → コントロールパネル → システム設定 に移動します。 category.n2f3 をクリックしてください。

    「その他」カテゴリの下にある category.n2f3 をクリックしてください。

    別のフォントの色、フォントの種類、フォントサイズを入力してみてください。更新 ボタンをクリックし、公開されたウィジェットのあるページに戻ります。属性が変更されたことを確認してください。

設定フレームワークの仕組みは以下のとおりです。

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

設定インターフェイスで設定可能な属性を定義するだけで、 システム設定 に設定 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つの設定可能な属性があります。 color と family は型 文字列 であり、size は型 整数 であることに注意してください。

Meta.OCD はこのクラスを特定の ID を持つ構成として登録します。

重要

IDは、設定インターフェースの完全修飾クラス名(FQCN)でなければならないことに注意してください。

Meta.AD は、デフォルト値や、その属性が必須項目であるかどうかなど、属性に関するオプションのメタデータを指定します。属性値が必須であるにもかかわらずデフォルト値が設定されていない場合、アプリケーションが正しく動作するために、管理者が設定で値を設定する必要があることに注意してください。

注記

Liferay DXP 2025.Q1/Portal GA132 以前のバージョンでは、必須フィールドをtrue に設定するには、ConfigurableUtil を使用して設定を取得する必要があります。例えば:

@Activate
@Modified
protected void activate(Map<Object, Object> properties) {
   _n2f3WebConfiguration = ConfigurableUtil.createConfigurable(
      N2F3WebConfiguration.class, properties);
}

次に、MVCポートレットがどのように設定を読み込むかを見てみましょう。

アプリケーションから構成を読み込む

  1. @Component アノテーションでは、構成インターフェースクラスが configurationPid で指定されています。

    configurationPid = "com.acme.n2f3.web.internal.configuration.N2F3WebConfiguration"
    
  2. 設定にアクセスするには、 render() メソッドは ConfigurationProvider を利用します。構成プロバイダーAPIは、さまざまなスコープレベルで構成を取得するためのメソッドを提供します。サンプル プロジェクトの構成はインスタンス スコープであり、 getCompanyConfiguration() メソッドを使用して構成を取得します。

try {
	renderRequest.setAttribute(
		N2F3WebConfiguration.class.getName(),
		_configurationProvider.getCompanyConfiguration(
			N2F3WebConfiguration.class,
			_portal.getCompanyId(renderRequest)));
}

設定オブジェクトがリクエストオブジェクトに追加され、アプリケーションのJSPのリクエストから読み取れるようになりました。

JSPから設定にアクセスする

  1. 以下のインポート文は、設定インターフェースをJSPに追加します。

    <%@ page import="com.acme.n2f3.web.internal.configuration.N2F3WebConfiguration" %>
    
  2. リクエストオブジェクトから設定オブジェクトを取得し、設定値を読み取ります。

    <%
    N2F3WebConfiguration n2f3WebConfiguration = (N2F3WebConfiguration)request.getAttribute(N2F3WebConfiguration.class.getName());
    %>
    
  3. 属性 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に自動的に登録されます。

Liferay バージョン 7.4 Update/GA 51 より前のバージョンでは、構成クラスを ConfigurationBeanDeclaration で登録して構成プロバイダー API で使用する必要があります。 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 パッケージに配置します。