使用吊索模型从后端服务获取数据

时间:2016-12-06 15:14:12

标签: java servlets aem sling

我有一个扩展SlingAllMethodsServlet的servlet,它正在从后端服务请求数据,并且当前正在响应对象中发送一个JSONObject。我想利用SlingModels。这可以使用我创建的servlet来完成,还是必须将我的所有servlet代码放入SlingModel类的activate方法中?如果有可能,你能提供一个例子吗?

2 个答案:

答案 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);