Aem 从OSGi服务访问样式属性

Aem 从OSGi服务访问样式属性,aem,sling,Aem,Sling,我有一个OSGi服务,需要访问组件在其设计对话框中存储的值 因为我没有访问currentStyle值的权限。我试图通过自己实例化来访问该样式对象,但运气不佳 我当前从ServletRequest访问它的代码是 SlingHttpServletRequest resource = (SlingHttpServletRequest)request; ComponentContext componentContext = WCMUtils.getComponentContext(resource);

我有一个OSGi服务,需要访问组件在其设计对话框中存储的值

因为我没有访问currentStyle值的权限。我试图通过自己实例化来访问该样式对象,但运气不佳

我当前从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())

此时有一个style对象,但没有从中返回任何值。

我发现这段代码返回了正确的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());

第一行中的资源对象代表什么?这段代码似乎比需要的复杂得多。例如,如果资源是一个页面,您可以只说resource.adpatTo(page.class)。@ryanlunka至少在5.5中是这样的:如果资源用于页面上某个组件的节点,则它不能适应页面。我使用的资源是组件级资源。