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

scr*_*010 0 servlets sling aem

如果我按如下方式定义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")
})
Run Code Online (Sandbox Code Playgroud)

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

所以

我修改resourceTypes来读取

resourceTypes= {"site-administration/components/page/page-distribution"},
Run Code Online (Sandbox Code Playgroud)

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

我读过的所有文档都说上面应该有用,但事实并非如此.

出于绝望,我甚至尝试过"site-administration/components/page"哪种是我想要的页面的超级类型.

我正在使用这个servlet作为OSGi包的一部分运行一个干净的5.6.1实例.

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

任何帮助都会受到赞赏,因为我开始有点疯狂.

编辑

好的,所以我进一步了解:如果我访问该页面:

[path-to-page]/page.bob.html
Run Code Online (Sandbox Code Playgroud)

servlet会触发.但是这个URL bob不是选择器吗?如果是这样,为什么资源类型是什么cq:Page配置使用bob作为扩展?

非常困惑:-S

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

Tho*_*mas 5

页面的问题是resourceType存储在cq:Page节点下面的jcr:content节点上.如果你打电话[path-to-page]/_jcr_content.bob它应该工作.注意:_jcr_content是一个url保存版本jcr:content.

为什么你的最后一个例子实际上是有效的,我无法分辨.