如果我们这样设置组件资源:
- 我的组件
- 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/