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?
谢谢.
据我所知,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
| 归档时间: |
|
| 查看次数: |
9933 次 |
| 最近记录: |