Los componentes se pueden adaptar para generar la exportación JSON de su contenido en función de un marco de trabajo del modelador.
La exportación de JSON se basa en Modelos Sling, y en el Exportador del modelo Sling marco de trabajo (que se basa en Anotaciones de 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.
En primer lugar, se debe definir un modelo Sling para el componente.
Para ver un ejemplo del uso de modelos Sling, consulte AEM Desarrollo de los exportadores de modelos Sling en la.
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 .model
y el .json
extensión.
Además, esto especifica que la clase de modelo Sling se puede adaptar en la variable ComponentExporter
interfaz.
Las anotaciones de Jackson no se especifican en el nivel de clase del Modelo Sling, sino en el nivel de interfaz del Modelo. Esto sirve para garantizar que la exportación de JSON se considere como parte de la API del componente.
El ExporterConstants
y ComponentExporter
Las clases provienen de com.adobe.cq.export.json
paquete.
Aunque no es un caso de uso estándar, es posible configurar varios selectores además de la variable model
selector.
https://<server>:<port>/content/page.model.selector1.selector2.json
Sin embargo, en tal caso, la variable model
el selector debe ser el primer selector y la extensión debe ser .json
.
Para que el marco del exportador JSON lo tenga en cuenta, la interfaz del modelo debe implementar el ComponentExporter
interfaz (o ContainerExporter
, si hay un componente contenedor).
La interfaz del modelo Sling correspondiente ( MyComponent
) se anotaría usando Anotaciones de 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 mediante @JsonIgnore
o @JsonProperty
para cambiar el nombre de la propiedad JSON.
Los componentes principales admiten la exportación de JSON desde el lanzamiento 1.1.0 de los componentes principales y se puede utilizar como referencia.
Para ver un ejemplo, consulte la implementación del modelo Sling del componente principal de imagen y su interfaz anotada.
CÓDIGO EN GITHUB
Puede encontrar el código de esta página en GitHub
Para obtener más información, consulte lo siguiente: