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

CQ5 SlingServlet and resourceTypes not working for specific resource paths

如果我定义一个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 请求,这很好,但我真正想要的是处理对特定页面类型的请求,

SO

我修改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

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

页面的问题是 resourceType 存储在 cq:Page 节点下方的 jcr:content 节点上。如果您调用 [path-to-page]/_jcr_content.bob 它应该可以工作。注意:_jcr_contentjcr:content.

的 url 保存版本

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