Невозможно зарегистрировать сервлет - PullRequest
0 голосов
/ 12 февраля 2020

Я создал сервлет. Я добавил путь к сервлету в Apache sling servlet resolver. Я запускаю ajax вызов с URL-адресом, аналогичным пути сервлета. Но сервлет не зарегистрирован, поток не go к сервлету после вызова ajax. Я использую AEM 6.5.

Код сервлета PFB

package com.aem.poc.core.servlets;

import java.io.IOException;

import java.rmi.ServerException;

import com.aem.poc.core.service.WaterHeightService;

import org.apache.sling.api.SlingHttpServletRequest;

import org.apache.sling.api.SlingHttpServletResponse;

import org.apache.sling.api.resource.Resource;

import org.apache.sling.api.resource.ValueMap;

import org.apache.sling.jcr.api.SlingRepository;


import java.util.*;

//DS Annotations

import org.apache.sling.servlets.annotations.SlingServletPaths;

import org.osgi.service.component.annotations.Component;

import org.osgi.service.component.annotations.Reference;

import javax.servlet.Servlet;

import org.osgi.framework.Constants;

import org.apache.sling.api.servlets.HttpConstants;

import org.slf4j.LoggerFactory;

import org.slf4j.Logger;

@SlingServletPaths("/bin/heightSearchServlet")

@Component(service=Servlet.class)


public class WaterHeightServlet extends org.apache.sling.api.servlets.SlingAllMethodsServlet {

    //private static final long serialVersionUID = 2598426539166789515L;
    @Reference
    private SlingRepository repository;

    @Reference
    private WaterHeightService whs;
    List<Map> waterHeightList = new ArrayList<>();

    public void bindRepository(SlingRepository repository) {
        this.repository = repository;
    }

    @Override
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServerException, IOException {
        try
        {
            String requiredHeight = request.getParameter("id");
            waterHeightList.addAll(whs.getHeightList());
            Logger log = LoggerFactory.getLogger(WaterHeightServlet.class);
            //log.debug("passed param value is"+requiredHeight);
            for (Map item: waterHeightList) {
                log.debug("map item is"+item.get("datevalue"));
            }
            //response . write() trturn the data
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

Вызов ajax выглядит следующим образом:

$(document).ready(function() {

    //$('body').hide().fadeIn(5000);

   $('#fetch-heightdetails').click(function() {

    var targetHeight= $('#heightValue').val() ; 

    $.ajax({

            type: 'GET',    
            url:'/bin/heightSearchServlet',
            data:'id='+targetHeight ,
            success: function(msg){   
                var json = jQuery.parseJSON(msg); 
                console.log(json);               
            }
        });
    });
  });

Пожалуйста, помогите решить проблему

1 Ответ

0 голосов
/ 13 февраля 2020

Вы не возвращаете никакого ответа от сервлета. Используйте response.getWriter().write("Hello JSON"); Надеюсь, это поможет.

...