我已经创建了一个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);
}
});
});
});
请帮助解决问题
答案 0 :(得分:0)
您没有从servlet返回任何响应。使用response.getWriter().write("Hello JSON");
希望对您有所帮助。