如何检测 Sling 组件未能呈现并采取适当的措施?

How do I detect that a Sling component failed to render and take appropriate action?

我是 运行 AEM 6.3 并且有一个使用 HTL、Java 等构建的应用程序。我有一个组件作为资源包含如下:

<div data-sly-resource="${ 'resource-name' @ resourceType='path/to/resource'}"></div>

在某些情况下,该资源无法加载并且没有 HTML 正在呈现。我如何才能检测到该故障并采取措施?

最好,我想 return 正常响应并设置 HTTP header。

感谢您的帮助!

资源渲染失败的原因有多种:

  • 缺少资源
  • 无法访问资源
  • 渲染缺失servlet/script
  • 渲染错误servlet/script
  • 其他调用的代码(sling 模型、POJO、服务)出错
  • ...

即使您设法在处理过程中检测到其中一些失败,设置响应 header 也可能为时已晚,因为响应的一部分可能已经是 committed/flushed。

一个可能有效的解决方案是设置一个过滤器来处理资源呈现错误。您还可以缓冲响应以确保仅在所有处理完成后才开始发送。