假设我具有以下模型:
@Model(adaptables = Resource.class)
public class BasicScheduleModel {
@Self
protected Resource resource;
protected Envelope envelope;
protected Status status;
protected Metadata metadata;
protected Data data;
protected Messages messages;
........
如何将此模型作为JSON呈现给最终用户?
我知道可以使用GSON
库将Java类转换为JSON,但是在这种情况下,我应该引入新字段并在@PostConstruct方法中对其进行初始化:
private String json;
@PostContruct
private void init() {
this.json = new GsonBuilder().create().toJson(this);
}
private String getJson() {
return this.json;
}
并且比在html中使用视线使用此模型(必须创建新组件)
<sly data-sly-use.model="com.somewebsite.models.BasicScheduleModel">
${model.json @ context='unsafe'}
</sly>
有没有组件创建的优雅解决方案吗?
答案 0 :(得分:4)
如果您使用的是6.3 +,则可以使用吊索模型导出器功能来完成此操作,
https://sling.apache.org/documentation/bundles/models.html#exporter-framework-since-130-1
将代码更改为
@Model(adaptable = Resource.class, resourceType = "<resourcetype-here>")
@Exporter(name = "jackson", extensions = "json")
对<path-to-resource>.model.json
的请求将以JSON格式返回模型。您可以通过Exporter
批注中的配置覆盖选择器,使其与“模型”不同。