2014-07-21 44 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());