oo

Dynamic Includesを用いたJSPのカスタマイズ

liferay-util:dynamic-includeタグ は、コンテンツを挿入できるプレースホルダーです(JavaScriptコード、HTMLなど)。 サンプルプロジェクトでは、dynamic includeでコンテンツを挿入する方法を示しています。

サンプルプロジェクトをデプロイする

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

docker run -it -m 8g -p 8080:8080 liferay/dxp:2024.q1.1。

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

次に、以下の手順を実行します。

  1. 動的インクルードによるJSPのカスタマイズ をダウンロードして解凍します。

    curl https://resources.learn.liferay.com/dxp/latest/en/liferay-internals/extending-liferay/customizing-jsps/liferay-n3q9.zip -O
    
    unzip liferay-n3q9.zip
    
  2. モジュールのルートから、ビルドおよびデプロイします。

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

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

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

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

  5. サイトページに移動し、編集アイコン(Edit icon)をクリックします。 N3Q9 Bakerポートレットをページに追加します。 ウィジェットは、サンプルウィジェットの下にあります。

    N3Q9 Bakerポートレットをサイトページに追加します。

    最初の2行はN3Q9 Baker Portletから、3行目はN3Q9 Ableモジュールのdynamic includeから挿入されていることに注意してください。

Dynamic Includeを実装する

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

    @Component(service = DynamicInclude.class)
    
  2. includeメソッドで、カスタムコンテンツを追加します。 サンプルプロジェクトでは、シンプルなPrintWriterのサンプルを使用しています。

@Override
public void include(
		HttpServletRequest request, HttpServletResponse response,
		String key)
	throws IOException {

	PrintWriter printWriter = response.getWriter();

	printWriter.println("<h3>Added by N3Q9 Able dynamic include.</h3>");
}
  1. registerメソッドで、使用するdynamic includeタグを指定します。 サンプルでは、registerメソッドは、Bakerモジュールの view.jspのdynamic includeを対象としています。
@Override
public void register(DynamicIncludeRegistry dynamicIncludeRegistry) {
	dynamicIncludeRegistry.register("com.acme.n3q9.baker.web#view.jsp");
}

Dynamic Includeを挿入する

liferay-util:dynamic-includeタグをdynamic includeを挿入したい場所に追加します。 サンプルでは、N3Q9 Baker Portletの view.jspの一番下にタグを追加しています。

<%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util" %>

<h2>N3Q9 Baker Portlet</h2><br />

<h3>Hello N3Q9 Baker.</h3><br />

<liferay-util:dynamic-include key="com.acme.n3q9.baker.web#view.jsp" />

dynamic includeキーが、上記の register()メソッドで設定したターゲット属性と一致することを確認してください。

JSPやポートレットについては、JSPとMVCポートレットの使用を参照してください。