2015-09-21 17 views
8

Volevo sapere se c'è un modo per ottenere l'output HTML reso di un nodo Page in CQ5 senza toccare l'url effettivo. Ho il nodo Page e voglio ottenere l'output HTML reso di quel nodo Page programmaticamente in java e memorizzarlo in una stringa senza colpire l'URL della pagina.Ottieni l'output html da un nodo jcr in CQ5

Qualsiasi aiuto è apprezzato, grazie in anticipo!

risposta

4

Il nodo stesso è solo un dato. Framework Sling responsabile del rendering di questi dati. Usa un po 'di regole per determinare come dovrebbero essere resi questi dati. Sling Script Resolution Cheet Sheet Poiché Sling è un framework Web, esegue il rendering dei dati tramite richieste http.

di emulare questa richiesta in CQ/AEM Suggerisco di usare com.day.cq.contentsync.handler.util.RequestResponseFactory servizio

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

Speranza che aiuta.

+0

Esattamente quello che stavo cercando ..! Mi hai migliorato la giornata! Molte grazie....! – Rakesh

2

È possibile accedere al nodo fornendo una vista corretta. Poiché hai bisogno della visualizzazione html renderizzata, usa .html con il tuo nodo per ottenere l'html renderizzato. Così il vostro percorso del nodo sarà

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

Ora per leggere html di programmazione, è possibile effettuare una richiesta HTTP sopra percorso dal percorso, e salvare la risposta come stringa.

+0

Grazie! Ci proverò. – Rakesh

+0

Questo non ha funzionato per me. – Rakesh

+0

Si prega di spiegare cosa avete fatto, perché il concetto saggio questo approccio dovrebbe funzionare per il vostro caso. –