2016-12-06 4 views
0

バックエンドサービスからデータを要求しているSlingAllMethodsServletを拡張し、現在レスポンスオブジェクトにJSONObjectを戻しているサーブレットがあります。私はSlingModelsを利用したいと思います。これは、私が作成したサーブレットを使用して行うことができますか、またはすべてのサーブレットコードをSlingModelクラスのactivateメソッドに配置する必要がありますか?可能であれば、例を挙げることができますか?スリングモデルを使用してバックエンドサービスからデータを取得

+0

正確に何をしようとしていますか? Sling ModelのHTTPレスポンスでサーブレットが返すのと同じデータを再利用したいと思っていますか? – toniedzwiedz

答えて

0

あなたが記述したシナリオは、OSGIサービスのバックエンドサービスおよび関連するロジックへの呼び出しをカプセル化することによって、うまく機能します。このようにサービスはサーブレットで@Reference、スリングモデルクラスで@Injectとすることができます。

サーブレットの作業は、参照されるサービスで適切なメソッドを呼び出し、戻り値をJSONとしてシリアライズすることになります。同様に、Sling Modelの作業は、注入されたサービスに対して適切なメソッドを呼び出し、戻り値をHTL/JSP/getterの中の何にでも公開するように減らされます。

0

スリングモデルは、特定のスリングリソースを表す小さな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; 
    } 

} 

あなたがサーブレットからそのような何かを使用したい場合は、あなただけのappropiateリソースを取得し、あなたにそれを適応する必要があります。そして、あなたは単にスリングモデルは、Beanにそれらのプロパティを注入TitleTextModelと呼ば書くことができますモデルクラス:

TitleTextModel myModel=resource.adaptTo(TitleTextModel.class); 
+0

https://sling.apache.org/documentation/bundles/models.html#sourceに示すように、可能であればインターフェースを実装します。 Java 8の「デフォルト」メソッドでは、mixinは非常に簡単に実装でき、一般的に必要とされるモックと比較してテストが容易になり、最適なコード再利用が保証されます。 –

関連する問題