Os componentes podem ser adaptados para gerar a exportação JSON de seu conteúdo com base em uma estrutura de modelador.
A exportação JSON é baseada em Modelos Slinge no Exportador de Modelo Sling , que depende Anotações de 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.
Primeiro, um Modelo do Sling deve ser definido para o componente.
Para obter um exemplo de uso de Modelos do Sling, consulte o artigo Desenvolvendo exportadores do modelo 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 a variável .model
e o .json
extensão.
Além disso, isso especifica que a classe do Modelo do Sling pode ser adaptada ao ComponentExporter
interface.
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.
O ExporterConstants
e ComponentExporter
as classes vêm do com.adobe.cq.export.json
pacote.
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
No entanto, nesse caso, o model
o seletor deve ser o primeiro seletor e a extensão deve ser .json
.
Para ser considerado pelo quadro do exportador JSON, a interface do modelo deve implementar a variável ComponentExporter
interface (ou ContainerExporter
, no caso de um componente de contêiner).
A interface correspondente do Modelo do Sling (MyComponent
) seria anotada usando Anotações de Jackson para definir como ele deve ser exportado (serializado).
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 por @JsonIgnore
ou @JsonProperty
para renomear a propriedade JSON.
Os componentes principais oferecem suporte para exportação JSON e podem ser usadas 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: