0
AJAX를 사용하여 호출되는 Sling 서블릿을 만들었습니다. 다음은 서블릿 코드는 다음과 같습니다AEM 6.3 : Sling Servlet이 resourceType으로 등록되었습니다.
package com.aem.sites.servlets;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Modified;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.metatype.annotations.Designate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.aem.sites.interfaces.SearchConfiguration;
@Component(
immediate = true,
service = Servlet.class,
configurationPid = "com.aem.sites.servlets.SearchServlet",
property = {
"sling.servlet.methods=get",
"sling.servlet.selectors=search",
"sling.servlet.resourceTypes=aemsite-project/components/structure/page",
"sling.servlet.extensions=html"
}
)
@Designate(ocd=SearchConfiguration.class)
public class SearchServlet extends SlingSafeMethodsServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
/** The Constant logger. */
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
protected void doGet(final SlingHttpServletRequest req,
final SlingHttpServletResponse resp) throws ServletException, IOException {
logger.info("********************************inside search servlet:::do get*****************************************");
}
@Activate
@Modified
protected void Activate(SearchConfiguration config) {
logger.info("********************************inside search servlet*****************************************");
}
}
package com.aem.sites.interfaces;
import org.osgi.service.metatype.annotations.AttributeDefinition;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
@ObjectClassDefinition(name="Search Configuration")
public @interface SearchConfiguration {
@AttributeDefinition(
name = "Enable",
description = "Sample boolean property"
)
boolean enabled() default false;
}
이는 JS 파일입니다
$('#search-input input').keydown(function(event) {
var keyCode = (event.keyCode ? event.keyCode :event.which);
if(keyCode == 13) {
console.log('inside key event');
var searchterm = $("#search-input input").val();
console.log('value of search term is '+searchterm);
//$("searchForm").submit();
$.ajax({
type: "GET",
url: "/content/aemsite/en/results.search.html?q="+searchterm,
success: function(data) {
}
});
}
});
몇 가지 이유를 들어, 서블릿이 호출되지 않습니다. 나는이 예제를 따랐다 :
http://www.aemcq5tutorials.com/tutorials/sling-servlet-in-aem/
내가 여기에 놓친 거지 무엇 확실하지 않다.