Documentation

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

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

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

新しい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. Download and unzip Customizing JSPs with Dynamic Includes .

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

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

    注釈

    このコマンドは、デプロイされた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)をクリックします。 N3Q3 Bakerポートレットをページに追加します。 ウィジェットは、サンプルウィジェットの下にあります。

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

    最初の2行はN3Q3 Bakerポートレットからですが、3行目はN3Q3 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>");
    }
    
  3. 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を挿入したい場所に追加します。 サンプルでは、N3Q3 Bakerポートレットの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ポートレットの使用を参照してください。