当大型容器触发拆分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控制台配置。
  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