2015-09-21 4 views
8

Ich wollte wissen, ob es eine Möglichkeit gibt, die gerenderte HTML-Ausgabe eines Page-Knoten in CQ5 zu erhalten, ohne die tatsächliche URL zu treffen. Ich habe den Page-Knoten und möchte die gerenderte HTML-Ausgabe dieses Page-Knotens programmgesteuert in Java abrufen und in einer Zeichenfolge speichern, ohne die Seiten-URL zu treffen.Get html Ausgabe von einem jcr-Knoten in CQ5

Jede Hilfe wird geschätzt, danke im Voraus!

Antwort

4

Knoten selbst ist es nur ein Daten. Sling-Framework verantwortlich für die Wiedergabe dieser Daten. Es verwendet eine Reihe von Regeln, um zu bestimmen, wie diese Daten gerendert werden sollen. Sling Script Resolution Cheet Sheet Da Sling ein Web-Framework ist, werden Daten über http-Anfragen gerendert.

Um diese Anforderung in CQ/AEM zu emulieren Ich schlage vor, com.day.cq.contentsync.handler.util.RequestResponseFactory Service zu nutzen

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()); 
} 

Hoffe, es hilft.

+0

Genau das, was ich gesucht habe ..! Du hast gerade meinen Tag gemacht! Danke vielmals....! – Rakesh

2

Sie können auf den Knoten zugreifen, indem Sie eine korrekte Ansicht bereitstellen. Da Sie eine HTML-Ansicht benötigen, verwenden Sie HTML mit Ihrem Knoten, um HTML zu rendern. Also Ihr Knoten Pfad

/content/path/to/page/jcr:content/par/node_name.html 

Jetzt

wird html programmatisch zu lesen, können Sie eine HTTP-Anforderung über Pfad von Ihrem Weg machen und Antwort als Zeichenfolge speichern.

+0

Danke! Ich werde es versuchen. – Rakesh

+0

Das hat bei mir nicht funktioniert. – Rakesh

+0

Bitte erläutern Sie, was Sie getan haben, denn konzeptionell sollte dieser Ansatz für Ihren Anwendungsfall funktionieren. –