在sling servlet中调用除doGet或doPost之外的其他方法

时间:2015-11-06 09:36:05

标签: java servlets sling

我是Sling框架的新手。有什么方法可以调用不同的方法。

对于ex - on Page我添加,删除,编辑按钮除了创建三个文件之外,我可以在同一个文件中创建三个方法(添加,删除,更新)。

请建议。

我试过更改方法名称

@Property(name = "sling.servlet.methods", value = { "getData" })

但它不起作用

@Service
@Properties({
    @Property(name = "sling.servlet.paths", value = { "getData" }),
    @Property(name = "sling.servlet.methods", value = { "GET" })
     })
public class getData extends SlingAllMethodsServlet {

1 个答案:

答案 0 :(得分:2)

SlingAllMethodsServlet将支持任何有效的HTTP谓词作为方法,并且响应请求将调用相应的do方法。例如,在响应PUT请求时,将调用doPut方法。

在您的情况下,如果您希望您的servlet同时支持获取数据和创建新数据,您可能希望允许方法GETPOST并实现doGet和{{1方法。

doPost

要添加删除和编辑支持,您只需支持@Service @Properties( { @Property(name = "sling.servlet.paths", value = { "/getData" } ), @Property(name = "sling.servlet.metods", value = { "GET", "POST" } ) } ) public class DataServlet extends SlingAllMethodsServlet { @Override protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) { ... } @Override protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) { ... } } DELETE HTTP谓词以及在servlet中实现PUTdoDelete方法。

与切线相关的注释 - 通过使用@SlingServlet annotation代替@Service和@Component注释,您可以稍微缩短代码并获得更好的自动完成和文档支持。