問題
- 7.1の修正パックdxp-13-7110+から、Soy taglibを使ってColorPickerを作成し、これに似たものを作成しました:
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ include file="/init.jsp" %>
<%@ taglib uri="http://liferay.com/tld/soy" prefix="soy" %>
<p>
<b><liferay-ui:message key="colorpicker.caption"/></b>
</p>
<%
Map<String, Object> context = new HashMap<>();
context.put("color", "#ff0000");
context.put("id", "backgroundColor");
context.put("label", "background-color");
context.put("name", "backgroundColor");
%>
<soy:component-renderer
context="<%= context %>"
module="portlet-configuration-css-web/js/ColorPickerInput.es"
templateNamespace="com.liferay.portlet.configuration.css.web.ColorPickerInput.render"
/>soy:component-renderer
)が機能しなくなります:
環境
- Liferay DXP 7.1+
解像度
- 上記のスニペットは、偶然にもdxp-12-7110まで動作し、その動作は修正パックdxp-13-7110によって上書きされました。この修正パック以降、ポートレット内で
configuration-css-web
外部モジュールの内部コンポーネントを使用することはできなくなりました。 以前の動作を実現するためには、以下の手順で行ってください:
1. configuration-css-web
の代わりに、 ColorPickerInput
コンポーネントを com.liferay.portlet.configuration.css.web
からポートレットにコピーする必要があります(ColorPickerInput.soy, ColorPickerInput.es.js)。
2. 名前空間は、 ColorPickerInput.soy
3.で更新する必要があります。 templateNamespace
soy:component-renderer
taglib in view.jsp
4.で更新する必要があります。 package.json
を追加して soy
と es.js
ファイルを構築し、 liferay-npm-scripts 7.1.0
5を使用することにする。 npm install
6. node モジュールを以下のようにインストールします。 bnd.bnd
for soy capability
7.調整します。 Liferayの内部では、モジュールの構築にgradleを使用しているため、必要なファイルも8に追加する必要があります
。 ポートレットを構築するための build.gradle
を調整する
9. 私たちのソリューションでは、 copyClassesMetaInf
タスクを追加して、トランスパイルド js ファイルと node_modules
を build
folder
10 にコピーするためのクイックフィックスとしています。 gradlew clean build
11.ポートレットをビルドします。 デプロイ可能なjarは次の場所にあります: buildlibs helicolor.picker-1.0.0.jar
このようなプロジェクトの例は、このチケットの添付ファイルで、サポートされていないヒントという形で提供されています。