我正在编写一个OSGi组件,其中包含cardinal
个值。
我写了以下几行:
@Property(name="cardinalValue",cardinality=4,description="testing cardinality")
private String[] cardinalValue;
然后在代码中我试图打印出基数值:
for(String cardinal : cardinalValue){
log.debug(cardinal);
}
在OSGi包中的组件中安装并触发方法后,即使我在AEM控制台的配置管理器控制台中填充了值,也会出现空指针异常。
这是我第一次使用cardinality
,我甚至尝试过与上面的数组方法相同的List和Vector方法,但仍然没有成功打印日志中的值。
答案 0 :(得分:0)
我建议你自己初始化你的财产。
以下方式更改当前属性声明:
@Property(label="cardinalValue",cardinality=4,description="testing cardinality")
private static final String CARDINAL_PROPERTY = "cardinalValue";
private String[] cardinalValue;
然后编写方法,该方法将使用组件激活和修改的配置中的值初始化属性:
@Activate
@Modified
protected void activate(final Map<String, Object> props) {
String[] cardinalValue = PropertiesUtil.toStringArray(props.get(CARDINAL_PROPERTY));
}
现在您的cardinalValue
变量已初始化。