Servlets CQ5 SlingServlet和ResourceType不适用于特定的资源路径

Servlets CQ5 SlingServlet和ResourceType不适用于特定的资源路径,servlets,aem,sling,Servlets,Aem,Sling,如果我定义一个Sling Servlet,如下所示: @SlingServlet( label="TestResourceTypeServlet", name = "com.company.project.servlets.TestResourceType", extensions = {"bob"}, resourceTypes= {"cq:Page"}, methods= {"GET"}, metatype=true) @Properties(

如果我定义一个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将任何get请求提取到扩展名为“.bob”的每个页面,这很好,但我真正想要的是处理对特定页面类型的请求

SO

我将ResourceType修改为

resourceTypes= {"site-administration/components/page/page-distribution"},
提供的值是我试图使用.bob扩展名访问的页面的特定sling:resourceType(从CRXDE Lite中复制和粘贴),但我得到了404

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

出于绝望,我甚至尝试了
“站点管理/组件/页面”
,这是我想要的页面的超级类型

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

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

任何帮助都会很感激,因为我开始有点发疯了

编辑

好的,我有了进一步的了解:如果我使用以下工具访问页面:

[path-to-page]/page.bob.html
servlet启动。但是在这个URL中,
bob
不是选择器吗?如果是这样的话,为什么当资源类型为
cq:Page
时,配置作为扩展与bob一起工作

非常困惑


显然,我在这里遗漏了一些非常简单的内容。

页面的问题是resourceType存储在cq:Page节点下面的jcr:content节点上。如果您要调用
[path to page]/\u jcr\u content.bob
,它应该可以工作。注意:
\u jcr\u content
jcr:content
的url保存版本


我说不出上一个示例实际工作的原因。

页面的问题是resourceType存储在cq:Page节点下的jcr:content节点上。如果您要调用
[path to page]/\u jcr\u content.bob
,它应该可以工作。注意:
\u jcr\u content
jcr:content
的url保存版本


我说不出你的最后一个例子为什么有效。

非常感谢,这很有道理,也很有效。你知道AEM6是否不同吗?当我最初的尝试失败时,我参考了这个CQ版本6页面(),它没有提到在URL中使用jcr:content。这个示例配置选择器而不是扩展,但我无法想象它会有什么不同。无论如何,再次感谢您。首先:ResourceType特定的servlet很棒,但对于内容组件而不是整个页面来说更具意义。例如,如果您对某个组件进行ajax调用以加载更多数据。第二:选择符通常用于页面,您仍然希望有一个众所周知的扩展,如html、json或xml,以便消费者知道需要什么。非常感谢,这很有意义,也很有效。你知道AEM6是否不同吗?当我最初的尝试失败时,我参考了这个CQ版本6页面(),它没有提到在URL中使用jcr:content。这个示例配置选择器而不是扩展,但我无法想象它会有什么不同。无论如何,再次感谢您。首先:ResourceType特定的servlet很棒,但对于内容组件而不是整个页面来说更具意义。例如,如果您对某个组件进行ajax调用以加载更多数据。第二:选择器通常用于页面,您仍然希望有一个众所周知的扩展,如html,json或xml,这样消费者就知道会发生什么。真奇怪-如果你能共享一个最小捆绑包的源代码,这个最小捆绑包会产生有用的问题。真奇怪-如果你能共享一个最小捆绑包的源代码,这个最小捆绑包会产生有用的问题。