aem - CQ5.5 获取 servlet 中资源的 .infinity.json

标签 aem sling

如果我们这样设置组件资源:

  • 我的组件
    • mycomponent.jsp
    • mycomponent.JSON.jsp

我们可以假设它会这样工作:

  • /path/to/mycomponent.html => 查看 html
  • /path/to/mycomponent.json => 查看我的 json

此外,在 servlet 中我们也许可以做类似的事情

Resource myResource = resourceResolver.getResource(request, "path/to/mycomponent");

我只是好奇如何才能在 servlet 上下文中获取 .json 表示形式。

我已经做了一些事情来解决这个问题,但我想知道是否有替代方法,因为这个解决方案有很大的局限性。基本上,我在路径上加载 Node,并对 Node 及其子节点执行 JSONDumps。这将允许我从 mycomponent.getPath() 的资源中获取更大的 JSON 集,但它不允许我提取通过 mycomponent.JSON.jsp 创建的自定义 JSON View 。

任何想法/建议都会很棒,谢谢。

最佳答案

要捕获渲染资源的输出,您可以使用 SlingRequestProcessor 服务,该服务在内部发出请求,而无需通过网络层,但仍然使用用于处理 HTTP 的所有相同渲染机制请求。

如果您只需要在正在计算的渲染中包含此类输出,您可以使用 Request.getRequestDispatcher(somePathWithJsonExtension).include(request, response) 这是 Sling 和 CQ 包含的 JSP标签可以。

使用resourceResolver.getResource(...)不会进行任何渲染,它只是提供一个原始资源,它是一个数据/内容对象。

关于aem - CQ5.5 获取 servlet 中资源的 .infinity.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23113536/

相关文章:

java - Sling - 循环访问资源的属性

aem - 通过HTTP访问AEM 6.2错误日志

在 AEM 上启用 SSL,第三方服务停止工作

java - 如何检查 AntiSamy 是否正在我的 CQ 实例上运行?

osgi - 将 Sling Scheduler 与 Eclipse Equinox 或 OSGI @Reference 规则结合使用

java - 如何将 Sling serlvet 中的 sling.servlet.resourceTypes 设置为相对于自身的路径(到 serlvet 的资源)?

jar - Sling 运行模式的优先顺序

jackrabbit - 如何自动为 JCR 节点应用权限?

java - 如何添加命令 XX :-UseSplitVerifier to an OSGi bundle built in CRXDE Lite (CQ5. 5)?

maven - 当在我们的 Maven pom 中包含 Sling Dynamic Include 时,它​​不会安装 jar