當大型容器觸發分割JSON回應時,元件移動在Adobe Experience Manager中失敗

本文說明當頁面包含大量內容節點時,在Adobe Experience Manager (AEM)中移動頁面內的元件會失敗的原因,並提供暫時的因應措施。

說明 description

使用AEM時,在包含大量內容節點的頁面中移動元件時無法如預期運作。 當容器中的節點數超過Apache Sling GET Servlet (DefaultGetServlet)中JSON結果的設定限制時,就會發生此問題。 預設情況下,此限制會設為1000個節點。 超過限制時,對容器.infinity.json端點的請求會傳回​ HTTP 300 ​回應,其中包含多個分割JSON檔案的參考,而非單一JSON回應。 AEM編寫UI無法正確處理此分割回應,導致元件移動作業無訊息地失敗。

環境

  • Adobe Experience Manager (所有版本)

症狀

  • 嘗試在包含大量節點的頁面中移動元件沒有效果。
  • /container.infinity.json的請求傳回​ HTTP 300 ​回應,其中包含多個分割JSON檔案的參考,例如:
  • /content/.../jcr:content/root/container.2.json
  • /content/.../jcr:content/root/container.1.json
  • /content/.../jcr:content/root/container.0.json

原因

DefaultGetServlet會強制限制單一JSON回應中傳回的節點數。 超過此限制時,此servlet會傳回分割回應,目前元件移動作業期間不會由AEM編寫工作流程處理。

解決方法 resolution

請依照下列步驟解決問題:

  1. /system/console/configMgr登入AEM Web Console設定。
  2. 找到Apache Sling GET Servlet (org.apache.sling.servlets.get.DefaultGetServlet)的設定。
  3. json.maximumresults的值增加到比最大容器中的節點總數還高的數字(例如:從1000增加到2000)。
  4. 儲存設定。
  5. 請重試元件移動作業,確認其現在是否成功完成。
  6. 監視未來的AEM Sites發行說明,以取得此問題永久修正的更新。
recommendation-more-help
experience-cloud-kcs-help-kbarticles