我有一个扩展SlingAllMethodsServlet的servlet,它正在从后端服务请求数据,并且当前正在响应对象中发送一个JSONObject。我想利用SlingModels。这可以使用我创建的servlet来完成,还是必须将我的所有servlet代码放入SlingModel类的activate方法中?如果有可能,你能提供一个例子吗?
答案 0 :(得分:0)
通过将调用封装到后端服务以及OSGI服务中的关联逻辑,可以很好地满足您描述的场景。通过这种方式,服务可以由您的Servlet @Reference
进行,并由您的Sling Model类进行@Inject
。
然后,Servlet的工作将减少为在引用的Service上调用适当的方法并将返回值序列化为JSON。类似地,Sling模型的工作将减少为在注入的Service上调用适当的方法并将返回值暴露给HTL / JSP /在getter中的任何内容。
答案 1 :(得分:0)
吊索模型的作用是让您能够创建代表特定吊索资源的小bean。 例如,您可能有一些具有标题和文本的资源。然后你可以简单地编写一个名为TitleTextModel的Sling模型,它将这些属性注入bean:
@Model(adaptables = Resource.class)
public class TitleTextModel{
@ValueMapValue
private String text;
@ValueMapValue
private String title;
public String getText() {
return text;
}
public String getTitle() {
return title;
}
}
如果你想从你的Servlet中使用类似的东西,你只需要获得适当的资源并使其适应你的模型类:
TitleTextModel myModel=resource.adaptTo(TitleTextModel.class);