Activación de la exportación de JSON para un componente enabling-json-export-for-a-component
Los componentes se pueden adaptar para generar la exportación JSON de su contenido en función de un marco de trabajo del modelador.
Información general overview
La exportación de JSON se basa en Modelos Sling y en el marco de Exportador de modelos Sling (que a su vez se basa en anotaciones Jackson).
Esto significa que el componente debe tener un modelo Sling si debe exportar JSON. Por lo tanto, siga estos dos pasos para habilitar la exportación de JSON en cualquier componente.
Definir un modelo Sling para el componente define-a-sling-model-for-the-component
En primer lugar, se debe definir un modelo Sling para el componente.
La clase de implementación del modelo Sling debe estar anotada con lo siguiente:
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)
Esto garantiza que el componente se pueda exportar solo, utilizando el selector .model
y la extensión .json
.
Además, esto especifica que la clase de modelo Sling se puede adaptar a la interfaz ComponentExporter
.
ExporterConstants
y ComponentExporter
provienen del paquete com.adobe.cq.export.json
.Uso de varios selectores multiple-selectors
Aunque no es un caso de uso estándar, es posible configurar varios selectores además del selector model
.
https://<server>:<port>/content/page.model.selector1.selector2.json
Sin embargo, en tal caso, el selector model
debe ser el primer selector y la extensión debe ser .json
.
Anotar la interfaz del modelo Sling annotate-the-sling-model-interface
Para que el marco del exportador JSON lo tenga en cuenta, la interfaz del modelo debe implementar la interfaz ComponentExporter
(o ContainerExporter
, en el caso de un componente contenedor).
La interfaz del modelo Sling correspondiente (MyComponent
) se anotaría usando anotaciones Jackson para definir cómo se debe exportar (serializar).
La interfaz del modelo debe estar anotada correctamente para definir qué métodos se deben serializar. De forma predeterminada, todos los métodos que respetan la convención de nombres habitual de los captadores se serializan y derivan sus nombres de propiedades JSON de forma natural de los nombres de captadores. Esto se puede evitar o sobrescribir usando @JsonIgnore
o @JsonProperty
para cambiar el nombre de la propiedad JSON.
Ejemplos example
Los componentes principales admiten la exportación de JSON y se pueden usar como referencia.
Para ver un ejemplo, consulte la implementación del modelo Sling del componente principal de imagen y su interfaz anotada.