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 do Sling e na estrutura Exportador de Modelo do Sling (que ela mesma depende de Anotações do Jackson).

Isso significa que o componente deve ter um Modelo do Sling se precisar exportar JSON. Portanto, será necessário seguir essas duas etapas para habilitar a exportação JSON em qualquer componente.

Definir um Modelo do Sling para o Componente

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

OBSERVAÇÃO

Para obter um exemplo de uso de Modelos do Sling, consulte o artigo Desenvolvendo exportadores de modelos do 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 do Modelo do Sling pode ser adaptada à interface ComponentExporter .

OBSERVAÇÃO

As anotações Jackson geralmente não são especificadas no nível de classe do Modelo do Sling, mas 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.

Uso de 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

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

Anotar a interface do modelo Sling

Para ser considerado pela estrutura do Exportador JSON, a interface Modelo deve implementar a interface ComponentExporter (ou ContainerExporter, no caso de um componente de contêiner).

A interface do Modelo Sling correspondente (MyComponent) seria anotada usando Anotações Jackson para definir como ela 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 usual para getters serão serializados e derivarão seus nomes de propriedades JSON naturalmente dos nomes getter. Isso pode ser evitado ou substituído usando @JsonIgnore ou @JsonProperty para renomear a propriedade JSON.

Exemplo

Os Componentes principais são compatíveis com a exportação de JSON e podem ser usados como referência.

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

Para obter mais detalhes, consulte:

Nesta página