How to convert/export the AEM page into an experience fragment?
Hi,
Is there a way to render the entire AEM page in an experience fragment?
USE CASE:
I have a homepage that contains around 10 components. Now, I want to create a replica of the home page in the experience fragment and export it to AT. Since most of my components are tightly coupled and I cannot use the components directly in experience fragment. So, I'm looking for something that will bring the entire HTML DOM for the homepage and render in experience fragment via some custom component. I have tried the below servlet, but I'm getting an internal server error.
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.apache.sling.engine.SlingRequestProcessor;
import com.day.cq.contentsync.handler.util.RequestResponseFactory;
import com.day.cq.wcm.api.WCMMode;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SlingServlet(paths={"/bin/customservlet”})
public class AemResourceResolutionServlet extends SlingSafeMethodsServlet {
protected final Logger log = LoggerFactory.getLogger(this.getClass());
@Reference
private RequestResponseFactory requestResponseFactory;
@Reference
private SlingRequestProcessor requestProcessor;
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
String requestPath = "/content/myapp/en/us_en/home";
HttpServletRequest req = requestResponseFactory.createRequest("GET", requestPath);
log.debug("req..{}", req.getPathInfo());
WCMMode.DISABLED.toRequest(req);
ByteArrayOutputStream out = new ByteArrayOutputStream();
HttpServletResponse resp = requestResponseFactory.createResponse(out);
requestProcessor.processRequest(req, resp, request.getResourceResolver());
}
}
@vijayalakshmi_s @veenavikraman @anudeep_garnepudi @14414417 @joerghoh @vanegi
Regards,
Vijay
