Show Menu
TÓPICOS×

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 baseia-se nos Modelos de Sling e no quadro do Exportador do Modelo de Sling (que, por sua vez, se baseia em anotações Jackson-Annotations 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.
Para obter um exemplo de uso de modelos Sling, consulte o artigo Desenvolvendo 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 .model seletor e a .json extensão.
Além disso, isso especifica que a classe Sling Model pode ser adaptada à ComponentExporter interface.
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.
As ExporterConstants e ComponentExporter as aulas vêm do com.adobe.cq.export.json pacote.

Uso de vários seletores

Embora não seja um caso de uso padrão, é possível configurar vários seletores além do model seletor.
https://<server>:<port>/content/page.model.selector1.selector2.json

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

Anotar na interface do modelo Sling

A fim de ser tido em conta pelo quadro do exportador JSON, a interface modelo deve implementar a ComponentExporter interface (ou ContainerExporter , no caso de um componente container).
A interface correspondente do Modelo Sling ( MyComponent ) seria anotada usando anotações Jackson-Annotations 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 impedido ou substituído usando @JsonIgnore ou @JsonProperty para renomear a propriedade JSON.

Exemplo

Os Componentes principais suportam exportação JSON 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.