如何从 Sling 读取数据到 Jquery?
How to read data from Sling to Jquery?
作为 AEM UI 开发的一部分,我编写了一个 Sling Servlet 和 Jquery。我需要触发 Servlet 使用 Jquery 并将数据从 Servlet 读取到 Jquery?有帮助吗?
我的Jquery:
window.location.href = Granite.HTTP.externalize("/bin/dam/TimelineVersion");
var val=""; // Here I need to Read String Data from Servlet
alert(val);
我的 Sling Servlet:
@SlingServlet(paths="/bin/dam/TimelineVersion", methods = "GET", metatype=true)
@Properties({
@Property(name = "service.pid", value = "com.hpe.dam.author.support.servlet.TimelineVersion", propertyPrivate = false),
@Property(name = "service.vendor", value = "HPE", propertyPrivate = false) })
public class TimelineVersion extends SlingSafeMethodsServlet{
@Reference
private SlingRepository repository;
public void bindRepository(SlingRepository repository) {
this.repository = repository;
}
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
try {
String Data="This value i have to get in Jquery";
} catch (Exception e) {
}
}
}
您需要重构您的 servlet 才能真正写出响应(我建议您将 JSON 发送到浏览器):
@SlingServlet(paths="/bin/dam/TimelineVersion", methods = "GET", metatype=true)
@Properties({
@Property(name = "service.pid", value = "com.hpe.dam.author.support.servlet.TimelineVersion", propertyPrivate = false),
@Property(name = "service.vendor", value = "HPE", propertyPrivate = false) })
public class TimelineVersionServlet extends SlingSafeMethodsServlet {
@Reference
private SlingRepository repository;
private static Logger log = LoggerFactory.getLogger(TimelineVersionServlet.class);
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
try {
String data = "This value i have to get in Jquery";
response.getWriter().write(data);
} catch (Exception e) {
log.error(e); // handle appropriately
}
}
}
下面是你的Javascript:
$.get('/bin/dam/TimelineVersion')
.success(function(data) {
console.log(data);
})
.error(function() {
console.log('[ERROR] Could not perform request');
});
这是一个使用 jQuery 调用的 Sling Servlet 的工作示例:https://github.com/mickleroy/aem-ajax-search
作为 AEM UI 开发的一部分,我编写了一个 Sling Servlet 和 Jquery。我需要触发 Servlet 使用 Jquery 并将数据从 Servlet 读取到 Jquery?有帮助吗?
我的Jquery:
window.location.href = Granite.HTTP.externalize("/bin/dam/TimelineVersion");
var val=""; // Here I need to Read String Data from Servlet
alert(val);
我的 Sling Servlet:
@SlingServlet(paths="/bin/dam/TimelineVersion", methods = "GET", metatype=true)
@Properties({
@Property(name = "service.pid", value = "com.hpe.dam.author.support.servlet.TimelineVersion", propertyPrivate = false),
@Property(name = "service.vendor", value = "HPE", propertyPrivate = false) })
public class TimelineVersion extends SlingSafeMethodsServlet{
@Reference
private SlingRepository repository;
public void bindRepository(SlingRepository repository) {
this.repository = repository;
}
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
try {
String Data="This value i have to get in Jquery";
} catch (Exception e) {
}
}
}
您需要重构您的 servlet 才能真正写出响应(我建议您将 JSON 发送到浏览器):
@SlingServlet(paths="/bin/dam/TimelineVersion", methods = "GET", metatype=true)
@Properties({
@Property(name = "service.pid", value = "com.hpe.dam.author.support.servlet.TimelineVersion", propertyPrivate = false),
@Property(name = "service.vendor", value = "HPE", propertyPrivate = false) })
public class TimelineVersionServlet extends SlingSafeMethodsServlet {
@Reference
private SlingRepository repository;
private static Logger log = LoggerFactory.getLogger(TimelineVersionServlet.class);
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
try {
String data = "This value i have to get in Jquery";
response.getWriter().write(data);
} catch (Exception e) {
log.error(e); // handle appropriately
}
}
}
下面是你的Javascript:
$.get('/bin/dam/TimelineVersion')
.success(function(data) {
console.log(data);
})
.error(function() {
console.log('[ERROR] Could not perform request');
});
这是一个使用 jQuery 调用的 Sling Servlet 的工作示例:https://github.com/mickleroy/aem-ajax-search