Documentation

完全なカスタム構成

構成インターフェースを作成 すると、構成UIが自動的に生成されます。 ただし、構成に完全にカスタムのUIが必要な場合もあります。 たとえば、Liferayの構成管理を使用する代わりに、プログラムで構成を処理するよう計画している場合などです。 または、完全にカスタムのUIを作成する柔軟性が必要な場合もあります。 その方法は以下の通りです。

サンプルプロジェクトを参照する

新しいLiferay DXPインスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u29。

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

次に、以下の手順に従います。

  1. 完全カスタム設定 をダウンロードし、解凍してください。

    curl https://learn.liferay.com/dxp/latest/ja/building-applications/core-frameworks/configuration-framework/liferay-u2g5.zip -O
    
    unzip liferay-u2g5.zip
    
  2. モジュールのルートから、ビルドおよびデプロイします。

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

    注釈

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

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

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

  5. コントロールパネル] → [設定] → [System Settings] → [Third Party] に移動します。 [U2G5 Configuration] をクリックします。

    システム設定でU2G5構成に移動します。

    このビューはカスタムJSPファイルによって提供されることに注意してください。

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

構成インターフェイスで構成可能な属性を定義します。 サンプルプロジェクトには、fontColorfontFamily、およびfontSizeの3つの構成可能な属性があります。

@ExtendedObjectClassDefinition(
	category = "u2g5", generateUI = false,
	scope = ExtendedObjectClassDefinition.Scope.SYSTEM
)
@Meta.OCD(
	id = "com.acme.u2g5.web.internal.configuration.U2G5WebConfiguration",
	localization = "content/Language", name = "u2g5-configuration-name"
)
public interface U2G5WebConfiguration {

	@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();

@ExtendedObjectClassDefinitionアノテーションでは、generateUIfalseに設定されていることに注意してください。 これにより、構成UIが自動生成されなくなります。

構成Bean宣言を追加する

構成クラスをConfigurationBeanDeclarationに登録します。 これにより、システムは構成の変更が発生したときにそれを追跡できます。

@Component(service = ConfigurationBeanDeclaration.class)
public class U2G5WebConfigurationBeanDeclaration
	implements ConfigurationBeanDeclaration {

	@Override
	public Class<?> getConfigurationBeanClass() {
		return U2G5WebConfiguration.class;
	}

}

設定画面を実装する

  1. @Componentアノテーションを使用して、ConfigurationScreenの実装としてクラスを宣言します。

    @Component(service = ConfigurationScreen.class)
    
  2. カテゴリーキー、設定エントリーのキー、およびそのローカライズされた名前を設定します。 サンプルプロジェクトでは、システム設定でカテゴリーキーがthird-partyに設定されています。 構成名のString値は、バンドルのLanguage.propertiesファイルの言語キーによって設定されます。

    @Override
    public String getCategoryKey() {
    	return "third-party";
    }
    
    @Override
    public String getKey() {
    	return "u2g5-configuration-name";
    }
    
    @Override
    public String getName(Locale locale) {
    	return LanguageUtil.get(
    		ResourceBundleUtil.getBundle(locale, U2G5ConfigurationScreen.class),
    		"u2g5-configuration-name");
    }
    
  3. この例では、構成スコープは systemに設定されています。 詳細については、スコープ設定を参照してください。

    @Override
    public String getScope() {
    	return "system";
    }
    
  4. render()メソッドはConfigurationProviderを使用して構成を取得します。 サーブレットコンテキストは、リクエストディスパッチャへのアクセスを提供します。これにより、カスタムJSPが構成を読み取ることができます。

    @Override
    public void render(
    		HttpServletRequest httpServletRequest,
    		HttpServletResponse httpServletResponse)
    	throws IOException {
    
    	try {
    		RequestDispatcher requestDispatcher =
    			_servletContext.getRequestDispatcher("/u2g5.jsp");
    
    		httpServletRequest.setAttribute(
    			U2G5WebConfiguration.class.getName(),
    			_configurationProvider.getSystemConfiguration(
    				U2G5WebConfiguration.class));
    
    		requestDispatcher.include(httpServletRequest, httpServletResponse);
    	}
    	catch (Exception exception) {
    		throw new IOException("Unable to render /u2g5.jsp", exception);
    	}
    }
    
  5. 必ず@Referenceアノテーションを使用して、モジュールのシンボリック名を定義してください。

    @Reference(
        target = "(osgi.web.symbolicname=com.acme.u2g5.web)"
    )
    

Web-ContextPathを追加する

bnd.bndファイルでバンドルのWeb-ContextPathを指定します。 たとえば、サンプルプロジェクトのBndファイルにはWeb-ContextPath: /u2g5-webがあります。 これは、構成画面ファイルにServletContextオブジェクトを登録するものです。 サーブレットコンテキストはポートレット用に自動的に作成されますが、このサンプルにはポートレットがないため、この行をBndファイルに追加する必要があることに注意してください。

カスタムJSPを作成する

  1. 構成インターフェイスをJSPにインポートします。

    <%@ page import="com.acme.u2g5.web.internal.configuration.U2G5WebConfiguration" %>
    
  2. リクエストオブジェクトから構成値にアクセスします。

    <%
    U2G5WebConfiguration u2g5WebConfiguration = (U2G5WebConfiguration)request.getAttribute(U2G5WebConfiguration.class.getName());
    %>
    
  3. 属性fontColor()fontFamily()fontSize()をJSPで使用できるようになりました。

このサンプルプロジェクトは、ConfigurationScreenを使用してカスタムJSPで構成値を読み取って表示する方法の基本的な例を示しています。 アプリケーションで、独自のコードを記述し、ニーズに合わせて完全にカスタムの構成UIを作成します。