Сервлет AEM не выполняется - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть сервлет с аннотацией OSGI, как показано ниже

    @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

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

, я получаю ниже информацию, а не выполняемый сервлет,

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

Пожалуйста, дайте мне знать, если мне нужно сделать любую другую конфигурацию.

1 Ответ

0 голосов
/ 21 февраля 2019

Информация, которую вы получаете, является ответом Сервлета JSON по умолчанию

Пожалуйста, прочитайте это: Сервлеты и сценарии

Вырегистрация "SearchServlet" с помощью свойства "sling.servlet.paths".Это свойство определяется как:

sling.servlet.paths : список абсолютных путей, по которым сервлет доступен в качестве ресурса.Значение свойства должно быть либо одной строкой, либо массивом строк ...

Это означает, что ваш сервлет будет запускаться только при запросе одного и того же точного пути, в данном случае "/ example / search ", вот так:

GET /example/search

Я бы порекомендовал вам использовать свойства" resourceTypes "и" селекторы "в вашем сервлете, а не" пути ".Например, лучшая конфигурация может быть такой:

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

. С этой конфигурацией ваш SearchServlet должен запускаться с GET запросом к ресурсу с resourceType = "/ example /search.servlet ", с селектором " searchselector " и расширением " json ".Например:

GET /corcoran/search.searchselector.json
...