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