TagManager.resolve在AEM as a Cloud Service Publisher上傳回null
在AEM as a Cloud Service Publisher環境中,對TagManager.resolve的呼叫傳回null,但相同的邏輯在AEM 6.5或作者環境中可正常運作。 標籤解析度的系統預設為/etc/tags,而不是標準AEMaaCS路徑: /content/cq:tags。 若要修正此問題,請更新OSGi設定以停用舊版支援,並從作者和發佈者環境中移除/etc/tags節點。
說明 description
環境
Adobe Experience Manager (AEM) as a Cloud Service — 網站
問題/症狀
-
Servlet程式碼使用:
code language-none TagManager tagManager = request.getResourceResolver().adaptTo(TagManager.class); Tag tag = tagManager.resolve("/content/cq:tags/...");TagManager只在Publisher上解析為Null,在Author上則解析為。
-
記錄檔顯示:
com.day.cq.tagging.impl.JcrTagManagerFactoryImpl Using /etc/tags as root path for tags這表示系統預設為
/etc/tags。 -
標籤存在於Publisher的
/etc/tags下,而作者已正確設定/content/cq:tags。
根本原因
發行者上存在/etc/tags底下的標籤,導致AEM預設為舊版/etc/tags路徑。
解決方法 resolution
若要解決問題:
-
為服務
legacySupport.enabled.name(com.day.cq.tagging.impl.JcrTagManagerFactoryImplDay CQ標籤服務 )將OSGi組態屬性 設定為false。 這可確保AEM使用/content/cq:tags作為根路徑。 -
請確定Author和Publisher環境中的
/etc/tags節點遺失或空白。 -
若要清除發行者:
- 建立包含
/etc/tags但不含任何子節點的空白內容封裝。 - 在Author上安裝該套件,並將其復寫到Publisher。 這將會從兩個環境中移除
/etc/tags。
- 建立包含
-
或者,從作者發佈UI傳送
/etc/tagsDelete 動作要求,以直接從Publisher刪除 節點。
因此:
- AEM記錄檔應顯示:
com.day.cq.tagging.impl.JcrTagManagerFactoryImpl Using /content/cq:tags as root path for tags TagManager.resolve將正確使用/content/cq:tags的標籤。