无法注册servlet

问题描述 投票:0回答:1

我已经创建了一个servlet。我已经在Apache sling servlet解析器中添加了servlet路径。我正在使用与servlet路径相同的网址触发ajax调用。但是该Servlet未注册,ajax调用之后,该流程不会进入Servlet。我正在使用AEM 6.5。

PFB Servlet代码

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);               
            }
        });
    });
  });

请帮助解决问题

java sling aem-6
1个回答
0
投票

您没有从Servlet返回任何响应。使用response.getWriter().write("Hello JSON");希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.