从CQ5中的jcr节点获取html输出

Rak*_*esh 8 jcr sling aem

我想知道是否有一种方法可以在CQ5中获取页面节点的呈现HTML输出,而无需点击实际的URL.我有页面节点,我想在java中以编程方式获取该页面节点的呈现HTML输出,并将其存储在字符串中,而不会访问页面URL.

任何帮助表示赞赏,提前谢谢!

小智 5

节点本身只是一个数据。Sling框架负责呈现此数据。它使用一堆规则来确定应如何呈现此数据。Sling Script Resolution Cheet Sheet Sling是Web框架,它通过http请求呈现数据。

为了在CQ / AEM中模拟此请求,我建议使用com.day.cq.contentsync.handler.util.RequestResponseFactory服务

import org.apache.sling.engine.SlingRequestProcessor;
import com.day.cq.contentsync.handler.util.RequestResponseFactory;

@Reference
private RequestResponseFactory requestResponseFactory;

@Reference
private SlingRequestProcessor requestProcessor;

public String doStuff(){
    HttpServletRequest request = requestResponseFactory.createRequest("GET", "/path/to/your/node.html");
    request.setAttribute(WCMMode.REQUEST_ATTRIBUTE_NAME, WCMMode.DISABLED);

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    HttpServletResponse response = requestResponseFactory.createResponse(out);

    requestProcessor.processRequest(request, response, resourceResolver);        
    return out.toString(response.getCharacterEncoding());
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。