在AEM中,由于默认的AEM HttpService与Apache Sling Servlet Resolver仅接收POST请求,并忽略内容的请求,因此POST请求中传递的数据可能会丢失。如果您想在POST请求中保留数据,请使用以下代码示例:
@SlingServlet(methods = {"POST"}, resourceTypes = {"sling/servlet/default"}, selectors = {"postData"}, extensions = {"json"})
public class PostDataServlet extends SlingAllMethodsServlet {
@Override
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
String postData = IOUtils.toString(request.getReader());
// 处理您的POST数据
PrintWriter out = response.getWriter();
out.write("Post data is: " + postData);
}
}
在上面的代码示例中,我们使用Apache Sling Servlet Resolver注释@SlingServlet
来定义一个Servlet。我们使用doPost
方法来获取通过POST请求传递的数据,并在响应中将其写回。
因此,使用上述代码示例,您可以在AEM中正确地获取并处理POST请求的数据,而不会丢失内容。