Apache Sling Models 1.3.0 introduce Sling Model Exporter, un modo elegante di esportare o serializzare Sling Model oggetti in astrazioni personalizzate. Il presente articolo è corredato del caso d'uso tradizionale di Sling Models per popolare gli script HTL, utilizzando Sling Model Exporter per serializzare un Sling Model in JSON.
L'uso tradizionale per Sling Models fornisce un'astrazione aziendale per una risorsa o una richiesta, che fornisce script HTL (o, in precedenza, JSP) un'interfaccia per l'accesso alle funzioni aziendali.
Si sviluppano modelli comuni Sling Models che rappresentano AEM componenti o pagine e utilizzano Sling Model oggetti per alimentare gli script HTL con i dati, con il risultato finale di HTML visualizzato nel browser.
HTTP GET La richiesta viene effettuata per una risorsa in AEM.
Esempio: HTTP GET /content/my-resource.html
In base alla risorsa della richiesta sling:resourceType
, lo script appropriato viene risolto.
Lo script adatta la richiesta o la risorsa alla richiesta desiderata Sling Model.
Lo script utilizza il Sling Model oggetto per generare il rendering di HTML.
Il HTML generato dallo script viene restituito nella risposta HTTP.
Questo modello tradizionale funziona bene nel contesto della generazione di HTML come Sling Model può essere facilmente sfruttato tramite HTL. Creare dati più strutturati come JSON o XML è un’impresa molto più noiosa in quanto HTL non si presta naturalmente alla definizione di questi formati.
Apache Sling Model Exporter viene fornito con uno Sling fornito Jackson Exporter che serializza automaticamente un "ordinario" Sling Model in JSON. L'Esportatore Jackson, pur essendo abbastanza configurabile, al suo nucleo ispeziona il Sling Model e genera JSON utilizzando qualsiasi metodo "getter" come chiave JSON e i valori get restituiti come valori JSON.
La serializzazione diretta dei Sling Models consente loro di soddisfare entrambe le normali richieste Web con le risposte HTML create utilizzando Sling Model flusso di richieste (vedi sopra), ma espone anche le rappresentazioni JSON che possono essere utilizzate dai servizi web o dalle applicazioni JavaScript.
Questo flusso descrive il flusso utilizzando l'esportatore Jackson fornito per produrre l'output JSON. L’uso di esportatori personalizzati segue lo stesso flusso ma con il loro formato di output.
HTTP GET Request viene fatto per una risorsa in AEM con il selettore e l’estensione registrati con Sling ModelEsportatore.
Esempio: HTTP GET /content/my-resource.model.json
Sling risolve la risorsa richiesta sling:resourceType
, selettore ed estensione di un servlet Sling Exporter generato dinamicamente, mappato su Sling Model con Esportatore.
Il servlet Sling Exporter risolto richiama il Sling Model Exporter contro Sling Model oggetto adattato dalla richiesta o dalla risorsa (come determinato dalle adattabili Sling Models).
L'esportatore serializza il Sling Model in base alle annotazioni Opzioni esportazione e Modello Sling specifico per l'esportatore e restituisce il risultato al servlet Sling Exporter.
Il servlet Sling Exporter restituisce il rendering JSON del Sling Model nella risposta HTTP.
Mentre il progetto Apache Sling fornisce l'esportatore Jackson che serializza Sling Models per JSON, il framework Exporter supporta anche gli esportatori personalizzati. Ad esempio, un progetto potrebbe implementare un esportatore personalizzato che serializza un Sling Model in XML.
Non solo Sling Model Exporter serializzare Sling Models, può anche esportarli come oggetti Java. L’esportazione in altri oggetti Java non svolge un ruolo nel flusso di richieste HTTP e quindi non viene visualizzata nel diagramma precedente.