CQ5 SlingServlet 和资源类型不适用于特定资源路径

问题描述 投票:0回答:1

如果我定义一个 Sling Servlet 如下:

@SlingServlet(
    label="TestResourceTypeServlet",
    name = "com.company.project.servlets.TestResourceType",
    extensions = {"bob"},
    resourceTypes= {"cq:Page"},
    methods= {"GET"},
    metatype=true)
@Properties({
@Property(name = "service.description", value = "A test servlet"),
@Property(name = "service.vendor",  value = "Company")
})

servlet 会拾取对每个扩展名为“.bob”的页面的任何 get 请求,这很好,但我真正想要的是处理对特定页面类型的请求,

所以

我修改resourceTypes为read

resourceTypes= {"site-administration/components/page/page-distribution"},

提供的值是我尝试使用 .bob 扩展名访问的页面的特定 sling:resourceType(从 CRXDE Lite 复制并粘贴),但我得到 404!!!

我读过的所有文档都说上述内容应该有效,但事实并非如此。

出于绝望,我什至尝试了

"site-administration/components/page"
,这是我想要的页面的超级类型。

我正在运行一个干净的 5.6.1 实例,该 servlet 作为 OSGi 捆绑包的一部分。

我是否在这里遗漏了一些明显的东西,或者如果没有,是否有人知道可以解决此问题的任何修补程序

任何帮助将不胜感激,因为我的头脑开始有点疯狂。

编辑

好吧,我已经更进一步了:如果我通过以下方式访问该页面:

[path-to-page]/page.bob.html

Servlet 启动。但是这个 URL 中的

bob
不是选择器?如果是这样,为什么当资源类型为
cq:Page
时,配置是否可以使用 bob 作为扩展?

非常困惑:-S

我显然在这里遗漏了一些非常简单的东西。

servlets aem sling
1个回答
5
投票

pages 的问题在于,resourceType 存储在 cq:Page 节点下方的 jcr:content 节点上。如果您拨打

[path-to-page]/_jcr_content.bob
,它应该可以工作。注意:
_jcr_content
jcr:content
的 url 安全版本。

为什么你的最后一个例子实际上有效,我不知道。

© www.soinside.com 2019 - 2024. All rights reserved.