2015-11-06 47 views
0

我是Sling框架的新手。有什麼辦法可以調用不同的方法嗎?除了doGet或doPost之外,還可以調用不同的方法在吊索上servlet

對於ex-on頁面,我添加,刪除,編輯按鈕,除了創建三個文件,我可以在同一個文件中創建三種方法(添加,刪除,更新)。

請建議。

我試圖通過改變方法名

@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

SlingAllMethodsServlet將支持任何有效的HTTP動詞的方法和響應請求將調用適當的do方法。例如,爲了響應PUT請求doPut方法將被調用。

在你的情況,如果你想你的servlet支持獲取數據和創建新的數據,你會希望允許的方法GETPOST和落實doGetdoPost方法。

@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) { ... } 

} 

要添加刪除和編輯的支持,以及你只需要支持DELETEPUT HTTP動詞在你的servlet實施doDeletedoPut方法一起。

切線相關的註釋 - 通過使用@SlingServlet annotation代替@Service和@Component註釋,您可以縮短代碼並獲得更好的自動完成和文檔支持。

+0

並注意最好避免使用sling.servlet.paths註冊servlet。根據https://sling.apache.org/documentation/the-sling-engine/servlets.html,使用映射到servlet的資源類型在所需的路徑上創建資源,在大多數情況下提供相同的結果,同時利用更多的Sling內置功能,包括訪問控制。 –

相關問題