當大型容器觸發分割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
請依照下列步驟解決問題:
- 在
/system/console/configMgr登入AEM Web Console設定。 - 找到Apache Sling
GETServlet (org.apache.sling.servlets.get.DefaultGetServlet)的設定。 - 將
json.maximumresults的值增加到比最大容器中的節點總數還高的數字(例如:從1000增加到2000)。 - 儲存設定。
- 請重試元件移動作業,確認其現在是否成功完成。
- 監視未來的AEM Sites發行說明,以取得此問題永久修正的更新。
recommendation-more-help
experience-cloud-kcs-help-kbarticles