Adobe CQ5自定义servlet路径

Dmi*_*ich 1 adobe servlets aem

我正在尝试为某些节点添加一些json处理功能.所以我写了自定义servlet扩展,SlingSafeMethodsServlet当用户为以下url进行GET时我需要执行它:/data/events/any_sequence/any_sequence.json/data/events/any_sequence/any_sequence.infinity.json或者例如/ data /events/any_sequence/any_sequence.2.json其中any_sequence当然是指任何有效的符号序列.

问题是我无法在吊索文档中找到如何将此模板映射为url.

我一直在尝试设置这样的属性:

@Component
@Service
@Properties({
    @Property(name = "sling.servlet.resourceTypes", value = "data/events/-/-"),
    @Property(name = "sling.servlet.extensions", value = "json"),
    @Property(name = "sling.servlet.methods", value = "GET"),
    @Property(name = "service.description", value = "JSON advanced renderer")
})
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.我检查了felix控制台,发现我的服务已经启动并运行,所以问题是如何设置url映射.所以我的问题是如何在我的情况下设置url映射来调用我的自定义servlet的doGet?

谢谢.

Dmi*_*ich 5

据我所知,CQ5不提供在通配符URL上映射自定义servlet的功能.实现类似于我需要的目标的唯一方法是为此servlet选择器使用一些唯一的,如下所示:

@Component
@Service
@Properties({
    @Property(name = "sling.servlet.resourceTypes", value = "sling/servlet/default"),
    @Property(name = "sling.servlet.extensions", value = "json"),
    @Property(name = "sling.servlet.selectors", value = "advanced"),
    @Property(name = "sling.servlet.methods", value = "GET"),
    @Property(name = "service.description", value = "JSON advanced renderer")
})
Run Code Online (Sandbox Code Playgroud)

这段代码意味着如果我尝试在某个带有*.advanced.json选择器和扩展的节点上进行GET,那么请求将被转发到我的自定义servlet.

请参阅http://apache-sling.73963.n3.nabble.com/Register-servlet-for-subtree-td84106.html