to export model I'm using Jackson exporter so json is coming for my model as expected.
But I observed few of the model class again they are implements CompoentExporter?
What is the use if class implements CompoentExporter?
Solved! Go to Solution.
Views
Replies
Total Likes
com.adobe.cq.export.json.ComponentExporter:
In summary, the @exporter(name="Jackson", type="json") annotation is more about configuring serialization behavior in Java using the Jackson library, while com.adobe.cq.export.json.ComponentExporter is specifically about exporting AEM component data to JSON format for client-side rendering within the AEM ecosystem.
@user96222 In the Adobe Experience Manager (AEM) framework, the ComponentExporter interface is used to export a component's data to be consumed by client-side code, typically for rendering purposes on the client side. This interface is part of the AEM SPA Editor and AEM's support for Single Page Applications (SPAs) where components are rendered on the client side using frameworks like React, Angular, or Vue.js.
When a class implements the ComponentExporter interface, it means that the class is responsible for providing the necessary data to render a component on the client side. This data could include component properties, content, state, and any other relevant information required for rendering.
Implementing ComponentExporter involves implementing the exportAsJson() method, which returns a JSON representation of the component's data. This JSON data can then be consumed by client-side JavaScript to render the component.
Here's a basic example of how a class might implement ComponentExporter in Java code within the AEM context:
import com.adobe.cq.export.json.ComponentExporter;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class MyComponent implements ComponentExporter {
private Resource resource;
public MyComponent(Resource resource) {
this.resource = resource;
}
@Override
public String getExportedType() {
return "myproject/components/mycomponent";
}
@Override
public Object exportAsJson() throws IOException {
ValueMap properties = resource.getValueMap();
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(properties);
}
}
In this example:
By implementing ComponentExporter, this class enables AEM to export the component's data as JSON, which can then be consumed by client-side code for rendering the component.
com.adobe.cq.export.json.ComponentExporter:
In summary, the @exporter(name="Jackson", type="json") annotation is more about configuring serialization behavior in Java using the Jackson library, while com.adobe.cq.export.json.ComponentExporter is specifically about exporting AEM component data to JSON format for client-side rendering within the AEM ecosystem.