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

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

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

解决方法

节点本身它只是一个数据. 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());
}

希望能帮助到你.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些