你沒說什麼類型的Java類你想獲得配置。讓我們通過選擇:
1.任何OSGi服務(如servlet中,過濾器或事件偵聽器)
添加以下字段添加到OSGi的組件類:
@Reference
private ConfigurationAdmin configurationAdmin;
,並在使用它與JSP中的方式相同。
2. OSGi服務到吊帶:OsgiConfig屬於
如果添加sling:OsgiConfig
節點配置自己的OSGi的組件,跟蹤Chris建議:
@Component
@Properties({
@Property(name = "propertyPath")
})
public class MyComponent {
private String[] propertyPath;
@Activate
public void activate(ComponentContext ctx) {
propertyPath = PropertiesUtil.toStringArray(context.getProperties().get("propertyPath"));
}
public void myMethod() {
// do something with the propertyPath field
}
}
的激活方法自動調用由OSGi。的ComponentContext
合格的名字是org.osgi.service.component.ComponentContext
3.普通Java對象
如果你的類是不是OSGi的組件,你需要有至少到SlingHttpServletRequest
對象訪問。如果你這樣做,你可以從中提取SlingScriptHelper
並用它來獲得ConfigurationAdmin
:
SlingHttpServletRequest request = ...;
SlingBindings bindings = (SlingBindings) request.getAttribute(SlingBindings.class.getName());
SlingScriptHelper sling = bindings.getSling();
// here you can use your JSP code
謝謝你的迴應克里斯。你能不能讓我知道這個ComponentContext是否屬於com.day.cq.wcm.api.components。因爲我無法在此ComponentContext中找到方法getProperties()。此外,一旦我有了propertyPath的值,我怎樣才能在其他方法中獲取這個值。我必須調用激活方法嗎? – user972418
我相信這是您需要的重要資訊。 import org.osgi.service.component.ComponentContext; –