簡體   English   中英

AEM Servlet 未執行

[英]AEM Servlet not getting executed

我有一個帶有 OSGI 注釋的 servlet,如下所示

    @Component( immediate = true, service = Servlet.class, property = { "sling.servlet.extensions=json",
        "sling.servlet.paths=/example/search", "sling.servlet.methods=get" } )
    public class SearchSevrlet
        extends SlingSafeMethodsServlet {
      @Override
        protected void doGet( final SlingHttpServletRequest req, final SlingHttpServletResponse resp )
            throws ServletException, IOException {
      log.info("This is not getting called ");
    }
}

但是當我嘗試使用 JQuery 訪問 servlet 時

$.get( "/example/search.json", function( data ) {
      $( ".result" ).html( data );
      alert( "Load was performed." );
    });

我得到以下信息而不是 servlet 被執行。

{"sling:resourceSuperType":"sling/bundle/resource","servletClass":"com.group.aem.example.servlet.SearchSevrlet","sling:resourceType":"/example/search.servlet","servletName":"com.group.aem.example.servlet.SearchSevrlet"}

如果我需要進行任何其他配置,請告訴我。

您獲得的信息是默認 JSON Servlet的答案

請閱讀: Servlets and Scripts

您正在使用屬性“sling.servlet.paths”注冊“SearchServlet”。 該屬性定義為:

sling.servlet.paths :servlet 可作為資源訪問的絕對路徑列表。 屬性值必須是單個字符串、字符串數組...

這意味着只有當您請求相同的確切路徑時才會觸發您的 servlet,在本例中為"/example/search" ,如下所示:

GET /example/search

我建議您在 Servlet 中使用屬性“resourceTypes”和“selectors”而不是“paths”。 例如,更好的配置可能是:

    property = { 
        "sling.servlet.resourceTypes=/example/search.servlet",
        "sling.servlet.selectors=searchselector",
        "sling.servlet.extensions=json",
        "sling.servlet.methods=GET" 
    }

使用此配置,您的 SearchServlet 應該通過對資源類型為resourceType="/example/search.servlet"GET請求觸發,選擇器為"searchselector"和擴展名為"json" 例如:

GET /corcoran/search.searchselector.json

我和你有類似的問題。

為了找出問題所在,我查看了“最近的請求”頁面。 (在 http://localhost:4502/system/console/requests。)

就我而言,有一條日志說,“不會在(我的請求路徑)查找 servlet,因為它不在允許的路徑列表中”。

所以我轉到“配置管理器”頁面(在 http://localhost:4502/system/console/configMgr),並搜索“ Apache Sling Servlet/Script Resolver and Error Handler ”。

它有一個名為“執行路徑”的列表,我將我的請求路徑添加到列表中。

將我的路徑添加到列表后,問題就解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM