Ativando a exportação JSON para um componente

Os componentes podem ser adaptados para gerar a exportação JSON de seu conteúdo com base em uma estrutura de modelador.

Visão geral

A exportação JSON é baseada em Modelos Sling e na estrutura Exportador de Modelo Sling (que depende ela própria de anotações Jackson).

Isso significa que o componente deve ter um Modelo Sling se precisar exportar JSON. Portanto, você precisará seguir estas duas etapas para ativar a exportação JSON em qualquer componente.

Definir um Modelo Sling para o Componente

Primeiro, um Modelo Sling deve ser definido para o componente.

OBSERVAÇÃO

Para obter um exemplo de uso de Modelos Sling, consulte o artigo Desenvolvimento de exportadores de modelos Sling em AEM.

A classe de implementação do Modelo Sling deve ser anotada com o seguinte:

@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)

Isso garante que seu componente possa ser exportado sozinho, usando o seletor .model e a extensão .json.

Além disso, isso especifica que a classe Sling Model pode ser adaptada à interface ComponentExporter.

OBSERVAÇÃO

As anotações Jackson geralmente não são especificadas no nível de classe do Sling Model, mas sim no nível de interface do Modelo. Isso garante que a exportação JSON seja considerada como parte da API do componente.

OBSERVAÇÃO

As classes ExporterConstants e ComponentExporter vêm do pacote com.adobe.cq.export.json.

Usando vários seletores

Embora não seja um caso de uso padrão, é possível configurar vários seletores além do seletor model.

https://<server>:<port>/content/page.model.selector1.selector2.json

Entretanto, nesse caso, o seletor model deve ser o primeiro seletor e a extensão deve ser .json.

Anotar na interface do modelo Sling

Para ser tida em conta pelo quadro do Exportador JSON, a interface Model deve implementar a interface ComponentExporter (ou ContainerExporter, no caso de um componente de container).

A interface correspondente do Modelo Sling ( MyComponent) seria anotada usando anotações Jackson para definir como deve ser exportada (serializada).

A interface Modelo precisa ser anotada corretamente para definir quais métodos devem ser serializados. Por padrão, todos os métodos que respeitam a convenção de nomenclatura comum para getters serão serializados e derivarão seus nomes de propriedades JSON naturalmente dos nomes do getter. Isso pode ser evitado ou substituído usando @JsonIgnore ou @JsonProperty para renomear a propriedade JSON.

Exemplo

Os Componentes principais têm suporte para exportação JSON desde a versão 1.1.0 dos componentes principais e podem ser usados como referência.

Para ver um exemplo, consulte a implementação do Modelo Sling do Componente principal de imagem e sua interface anotada.

CÓDIGO NO GITHUB

Você pode encontrar o código desta página no GitHub

Para mais informações, consulte:

Nesta página

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now