当大型容器触发拆分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控制台配置。 - 找到Apache Sling
GETServlet (org.apache.sling.servlets.get.DefaultGetServlet)的配置。 - 将
json.maximumresults的值增加到高于最大容器中总节点数的数字(例如:从1000增加到2000)。 - 保存配置。
- 重试组件移动操作以验证它现在是否已成功完成。
- 监控未来的AEM Sites发行说明,了解有关此问题永久修复的更新。
recommendation-more-help
experience-cloud-kcs-help-kbarticles