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

若要解決問題:

  1. 為服務legacySupport.enabled.namecom.day.cq.tagging.impl.JcrTagManagerFactoryImplDay CQ標籤服務 )將OSGi組態屬性 設定為false。 這可確保AEM使用/content/cq:tags作為根路徑。

  2. 請確定Author和Publisher環境中的/etc/tags節點遺失或空白。

  3. 若要清除發行者:

    1. 建立包含/etc/tags但不含任何子節點的空白內容封裝。
    2. 在Author上安裝該套件,並將其復寫到Publisher。 這將會從兩個環境中移除/etc/tags
  4. 或者,從作者發佈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的標籤。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f