4

OSGi バンドルの Java クラスには、ページの URI があります -

String pageUri = "/content/site/page.html" ;

この URL を使用して Page オブジェクトを作成するにはどうすればよいですか? 基本的に、後でオブジェクトからもページのプロパティを取得する必要があります...

クラスでこのコードを試しました:

PageManager pm = new PageManager();
Page page = pm.getPage(pageUri);

しかし、これは私にコンパイルエラーを与えます:

Cannot instantiate the type PageManager
4

3 に答える 3

2

「OSGi バンドル内のクラス」によってSlingAllMethodsServletを拡張している場合、リゾルバー/ページ マネージャーを取得できるリクエストにアクセスできます。

class Foo extends SlingAllMethodsServlet {
    @Override
    protected void doGet(SlingHttpServletRequest request, 
                         SlingHttpServletResponse response) 
        throws javax.servlet.ServletException, java.io.IOException {

           ResourceResolver resourceResolver = request.getResourceResolver();
           PageManager pageManager = resourceResolver.adaptTo(PageManager.class);

           String pageUri = "/content/site/page.html" ;
           Page page = pageManager.getPage(pageUri);
    }
}

このバンドル内の設定によって異なります。

于 2013-08-29T08:11:26.567 に答える
1

PageManager をインスタンス化できません。インスタンスを取得するには、リソース リゾルバーを適応させることができます: resourceResolver.adaptTo(PageManager.class)。

通常、resourceResolver はリソースから取得できます: resource.getResourceResolver()。また、sling リクエストから直接取得することもできます。

于 2013-08-29T06:16:14.947 に答える