2014-07-21 43 views
0

我有一個OSGi服務需要訪問組件存儲在其設計對話框中的值。訪問OSGi服務的樣式屬性

由於我無權訪問currentStyle值。我試圖通過自己實例化來訪問該Style對象,但運氣不大。

我當前的代碼從該ServletRequest中訪問它是

SlingHttpServletRequest resource = (SlingHttpServletRequest)request; 
ComponentContext componentContext = WCMUtils.getComponentContext(resource); 
Page page = componentContext.getPage(); 
Design design = page.adaptTo(Design.class); 
return design.getStyle(componentContext.getCell()) 

在這一點上是有樣式對象,但沒有值從它那裏得到返回。

+0

什麼是在第一線的資源對象代表什麼?看起來這個代碼比所需的更復雜。例如,如果資源是一個頁面,則可以說resource.adpatTo(Page.class)。 – ryanlunka

+0

@ryanlunka至少在5.5版本中,如果資源用於頁面上某個組件的節點,則它不能適應頁面。我正在使用的資源是一個組件級資源。 –

回答

0

我發現這個代碼返回正確的Style對象

SlingHttpServletRequest request = (SlingHttpServletRequest)adaptable; 
Designer designer = (Designer)request.getResourceResolver().adaptTo(Designer.class); 
ComponentContext componentContext = WCMUtils.getComponentContext(request); 
Page page = componentContext.getPage(); 
Design design = designer.getDesign(page); 
return design.getStyle(componentContext.getCell());